タツノオトシゴのブログ

主にJavaに関するものです。

EL2.2からのメソッド呼び出し

今さらですが、Tomcat7から、EL(Expression Language)2.2が利用できるようになりました。

EL2.2になったことで、非常に便利になったのが、オブジェクトのメソッド呼び出しが直接できるようになったことです。


今まで、getterはJavaBeanのプロパティとして、「${obj.name}」のように呼び出せていました。
しかし、任意のメソッドは呼び出すには、今までEL関数(EL Functions)で別途定義したメソッド経由で、「${fn:contains(obj, 'test')}」のように呼び出していました。
特に、マップやリストをオブジェクトとして渡したとき、containsメソッドなど呼び出すのに面倒でした。


EL2.2からは、「${obj.contains('test')}」のようにオブジェクトのメソッドが直接呼び出せるようになり、引数も渡せるようになりました。

これは、自分としてはかなりポイントが高いと思いました。
これにより、他のテンプレート言語のVelocityとFreeMakerと比較して、差が縮まった感じです。
違いといえば、if文などの条件式の記述方法やマクロが定義できるかどうかになったと思います。


WebでHTMLを表現するテンプレートエンジンならば、FreeMakerが個人的によいと思いますが、IDEで補間が効くJSPが開発する上ではやっぱし便利かなと思います。


まあ、でも業務上では、Servlet3が動作できるWebコンテナを使う場合は、まだ敷居が高い感じです。
Tomcat6系のサポートが終了すれば、強制的にTomcat7に切り替えることになりますが、新規開発以外の現状ではServlet3/JSP2.2/EL2.2への乗り換えは先のようです。