2012-03-19 14 views
2

私はクラスがBigDecimalです。 EL式にバインドしてnull-valueExpression.set(context, null)を渡すと、プロパティの新しい値はBigDecimal.ZEROになります。EL式:BigDecimalフィールドの値としてnullを渡します。

0に変換せずにBigDecimalフィールドにnullを渡す方法はありますか?

+0

BigDecimalはEL式で処理されますか?私は、ブール、整数、浮動小数点と文字列とヌルを見ることができます。 – montardon

+0

はい、それらは処理されますが、時には予期しない方法で - 数値演算を実行しようとします。 –

答えて

2

バージョン6.0.16以上のTomcatやJBoss ASのようなフォークを実行しているようです。 Tomcatの組み込みApache ELパーサーは、実際にはNumberを拡張するすべてのクラスでそれを行います。あなたは(実際に直感的であるが、残念ながら、厳密EL仕様ごとなど)、この動作を無効にするには、次のVM引数を追加する必要があります。

-Dorg.apache.el.parser.COERCE_TO_ZERO=false 

JSP/EL spec issue 184Tomcat issue 42385を参照してください。

+0

ありがとう、それは動作します! –

+0

ようこそ。 – BalusC

+0

これは、Tomcat 8に移行する際に影響を受けたので、他の人が(そのTomcatバージョンでは)設定されています**デフォルトではfalseです** - [リンク](http://tomcat.apache.org/ tomcat-8.0-doc/config/systemprops.html) –

関連する問題