EL表达式:将null作为BigDecimal字段的值传递

我有一个BigDecimal属性的类。 当我绑定它EL表达式并传递null – valueExpression.set(context, null) ,属性的新值变为BigDecimal.ZERO

有没有办法将null传递给BigDecimal字段而不将其转换为零?

您似乎正在运行至少版本6.0.16的Tomcat或者像JBoss AS那样的分支。 Tomcat的内置Apache EL解析器确实会为扩展Number所有类做到这一点。 您需要添加以下VM参数来禁用此行为(这确实不直观,但不幸的是严格按照EL规范):

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

另请参见JSP / EL规范问题184和Tomcat问题42385 。