2005.10.17 株式会社四次元データ 宮澤了祐
12.2. 関数の呼び出し
EL式から「Functions」という機能を用いて静的な関数を呼びだすことができます。 簡単な演算や文字列操作などを行うメソッドを作成しておくことでJSPでの実行できることが広がります。
入力された文字列の長さを返すメソッドを作成する例を用いて関数の設定、呼び出し法を解説していきます。
関数の作成
作成する関数はpublicかつstaticでなければなりません。
(MyFunctions.java) pulic class MyFunctions{ public static int strle( String str){ return str.length; } }
TLDファイルの作成
JSP2.0より新たに追加されたfunction要素をタグ定義ファイル設定します。
functionの主な子要素は以下です。
name | 関数を特定するユニークな名前です。 |
function-class | 静的関数の入っているクラス名を完全限定名で指定します。 |
function-signature | 関数の仕様を指定します。次のように記述します。返り値の完全限定名 関数名(引数の完全限定名[,引数の完全限定名,...]) |
今回作成するstrlen()関数の定義ファイルは次のようになります。Functions.tldというい名前をつけて保存します。
ここでは<name>の値と関数名を同じにしましたが、全く違っていても問題ありません。
(Functions.tld) <?xml version="1.0" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>2.0</tlib-version> <function> <name>strlen</name> <function-class>sample.MyFunctions</function-class> <function-signature> java.lang.Integer strlen(java.lang.String) </function-signature> </function> </taglib>
呼び出し
web.xmlにタグ定義ファイルを設定します。
<web-app> ... <jsp-config> ... <taglib> <taglib-uri>http://www.TechScore.com/Functions</taglib-uri> <taglib-location>/WEB-INF/Functions.tld</taglib-location> </taglib> <taglib> ... </jsp-config> </web-app>
JSPのtaglibディレクティブでタグライブラリを有効にします。
<%@ taglib uri="http://www.TechScore.com/Functions" prefix="func" %> <p>${func:strlen("あいうえお")}</p>
「5」と出力されれば成功です。ELからは「${prefix:name}」という形で関数を呼びだすことができます。