Developing Tag Library Functions

Besides tag handlers, a tag library can also contain EL functions. An EL function is implemented as a static method in a regular Java class. There are no special interfaces to implement or any special conventions to follow; any static method will do.

Example 21-12 shows a class with static methods for converting between degrees in Celsius and Fahrenheit.

Example 21-12. A class with static methods that can be used as EL functions
package com.ora.jsp.util;

public class TempConverter {
    public static double toCelsius(double fahrenheit) {
        return (fahrenheit - 32) * 5 / 9;
    }

    public static double toFahrenheit(double celsius) {
        return celsius * 9 / 5 + 32;
    }
}

The toCelsius( ) method takes a degree in Fahrenheit as its single argument and returns the corresponding Celsius value, and toFahrenheit( ) does the reverse.

To make these methods accessible as EL functions, they must be declared in the TLD for the tag library. We’ll look at the details in the next section, but here’s the bare minimum you need to add:

...
  <function>
    <name>toCelsius</name>
    <function-class>com.ora.jsp.util.TempConverter</function-class>
    <function-signature>double toCelsius(double)</function-signature>
  </function>

  <function>
    <name>toFahrenheit</name>
    <function-class>com.ora.jsp.util.TempConverter</function-class>
    <function-signature>double toFahrenheit(double)</function-signature>
  </function>
...

Each function is declared by three mandatory elements. The <name> element declares the function ...

Get JavaServer Pages, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.