PGBox
P
G
Box

EL式【function(関数)の作成】

JSPのメニューへ戻る



使用した環境
JDK 6 Update 11
Tomcat 6.0.18

独自のfunction(関数)を作成して使用するサンプルです。


EL式では、独自の関数を作成して使用する事が可能となっています。

このサンプルではEL式でsubstring(指定範囲の文字列抜き出し)を行う関数を作成してみます。
まず、任意のクラスに public static なメソッドを作成します。
package sample;

public class ELFunctions {
    
    /**
     * substringを行うEL関数
     * @param o
     * @param beginIndex
     * @param endIndex
     * @return
     */
    public static String substring(String str, int beginIndex, int endIndex) {
        
        if (str == null) {
            return "";
        }
        
        return str.substring(beginIndex, endIndex);
    }
    
}
戻り値や引数は自由に設定する事ができます。


次に、TLDファイルを作成します。WEB-INF以下に作成します。
WEB-INF/sample.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xml="http://www.w3.org/XML/1998/namespace"
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
          version="2.1">
      
    <tlib-version>1.0</tlib-version>
    <uri>/sample</uri>
    
    <function>
        <name>substring</name>
        <function-class>sample.ELFunctions</function-class>
        <function-signature>
            java.lang.String substring(java.lang.String, int, int)
        </function-signature>
    </function>
    
</taglib>

<uri>xxx</uri>で、このtldファイルのuriを指定します。この値は任意です。JSPで使用する際に指定します。

関数に関する情報は<function>タグを記述し、作成した関数に関する情報を記述します。
それぞれのタグの意味は以下のようになります。
タグ意味
name関数の名前を定義する。任意の名前を指定する。
function-class関数のメソッドが定義されているクラス名をパッケージからの完全名で指定する。
function-signature関数メソッドのシグネチャを記述する。戻り値・メソッド名・引数を正確に記述する。


tldファイルの詳細な情報についてはtldファイルを参照してください。


以上で自作した関数が使用可能となります。

JSPでは以下のようにして作成した関数を使用する事ができます。
taglibディレクティブのuri属性でtldファイル内の<uri>で記述した値を指定します。
<%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" %>
<%@ taglib prefix="sample" uri="/sample" %>

<% pageContext.setAttribute("aaa", "ABCDEFG"); %>

${sample:substring(aaa, 3, 5)}


このJSPを実行すると以下のような結果出力となります。
DE

tldファイルのuri指定方法は上記サンプルで行った方法以外にも幾つかあります。
詳しくはtaglibディレクティブを参照してください。




JSPのメニューへ戻る