Calling a static method from EL

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());

How to set application scope from Servlet

this.getServletContext().setAttribute("call", new Call())

How to set application scope from JSP

<jsp:useBean id="call" class="Call" scope="application" />

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’s say you have a static method which formats date. The method takes 2 arguments, the date format string and the Date object to format.

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. In the example below, “account” is a request scoped bean with a Date property called “creationDate” which needs to be formatted.

  ${call["com.mycompany.util.DateUtils.formatDate"]["MMM, dd"][account.creationDate]}

Just like the above example, you can call any static method (except overloaded methods). Simply pass the full class and method name as the first argument, and any parameters required by the method as subsequent arguments. In general, the format is:

  ${call["full.package.name.MethodName"][arg1][arg2][...]}

Note:

  • 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

Related posts:

  1. How to pass parameters in EL methods
  2. 2 ways to convert Java Map to String
  3. Maven Selenium
  4. Java Barcode API
  5. How to copy bean properties with a single line of code

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Get Adobe Flash playerPlugin by wpburn.com wordpress themes