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式が正しく評価されなくなってしまったのも、上記の件が関係しているだろうか。まいっちゃうなあ...。