カスタムタグハンドラ内でのELの解釈

自作カスタムタグ内の属性の値に,ELを記述したいときがある。普通にカスタムタグのハンドラを作った場合,ELの式の文字列が単にsetterに渡されるだけである。

渡されたELの式を評価し,ELが示しているオブジェクトを得るためには,以下のコードを実行すればよい。

import org.apache.taglibs.standard.lang.support.*;

Hoge targetObj;

String target = “${hoge}”;

targetObj = (Hoge)ExpressionEvaluatorManager.evaluate(

    ”target”,     // 属性名

    target,      // EL式文字列

    Hoge.class,   // 期待する型

    this,        // このタグハンドラ

    pageContext); // ページコンテキスト

JSP側で例えばすでに などでコレクションからオブジェクトを取り出しているような場合には,EL式によってカスタムタグハンドラに(間接的ではあるが)オブジェクトとして渡すことができるようになるので,非常に生産性が向上するし,なによりも直感的だ。

ぜひ抑えておくべきテクである。

このエントリーをはてなブックマークに追加

Yoichiro

(よういちろう)