Calling a Static Method From EL
Calling a Static Method From EL
Join the DZone community and get the full member experience.Join For Free
In my previous post I showed how to pass parameters in EL methods. In this post, I will describe how to call static methods from EL.
Step 1: Download Call.java and ELMethod.java
Download the classes Call.java and ELMethod.java, and copy them to your project.
Step 2: Add an instance of Call.java as an application scoped bean
There are many ways to do this, depending on this technology you are using. Here are some examples:
How to set request scope in JSP
request.setAttribute("call", new Call());
How to set session scope in JSP
session.setAttribute("call", new Call());
this.getServletContext().setAttribute("call", new Call())
How to set application scope from JSP
<jsp:useBean
How to set application scope in Seam
Add these annotations to your class
@Name("call")
@Scope(ScopeType.APPLICATION)
Step 3: Call any static method from EL as follows
Let us say you have a static method which formats date.
package com.mycompany.util;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
public static String formatDate(String format, Date date) {
return new SimpleDateFormat(format).format(date);
}
}
You can call the above static method from EL as follows. Here “account” is a request scoped bean with a Date property call “creationDate”.
${call["com.mycompany.util.DateUtils.formatDate"]["MMM, dd"][account.creationDate]}
In general the format is:
${call["full.package.name.MethodName"][arg1][arg2][...]}
- Use map notation with [square brackets] when passing arguments to ${call}
- First argument is the full package name + “.” + method name
- If the static method you are calling takes arguments, simply pass those arguments using more [square brackets]
- Overloaded methods are not supported, i.e. you cannot call methods where two methods with the same name exist in the class
References
- Call.java source code from my Google code project
- ELMethod.java source code from my Google code project
- How to pass parameters in EL methods
From
Opinions expressed by DZone contributors are their own.
{{ parent.title || parent.header.title}}
{{ parent.tldr }}
{{ parent.linkDescription }}{{ parent.urlSource.name }}