tomcat6.0.18 のEL不具合

ELの独自FunctionsがTomcat6.0.18から動作しなくなってしまった。

public static String myfunc(Number number) {
    ...
}

こんな感じでFunctionsメソッドを定義していて、ここにBigDecimalを渡したところ、次ぎようなエラーになってしまった。

Cannot convert 1,200 of type class java.math.BigDecimal to class java.lang.Number

何だろうなあと思ったら、tomcat6.0.18でのバグフィックス版リリース時に仕込まれた不具合の様子。

ELSupport.coerceToType modifies BigDecimal Values

6.0.19では修正されるとのこと。

ただ、待っていられないので、Numberで受け取る代わりにObjectで受けるようにして、メソッド内でNumberへのキャストを試みるように修正。

今さらながら、tomcat6.0.18では地味にJasper周辺の変更が施されているんだけど、実は無視できない変更が多いことに気付く。

 ${bigDecimal != 0}

というEL式が正しく評価されなくなってしまったのも、上記の件が関係しているだろうか。まいっちゃうなあ...。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/503