在EL中使用空参数调用方法最终传递0而不是null

时间:2013-05-22 10:42:50

标签: java tomcat spring-mvc el

我有一个POJO:

public class Foo {
    public String getValue(Integer arg0, BigDecimal arg1) {...}
}

我将它作为Spring MVC的模型参数放入JSP中,并尝试使用它:

<c:set var="ans" value="${foo.getValue(null, null)}"/>

但是在getValue方法

arg0 = 0
arg1 = 0

而非预期

arg0 = null
arg1 = null

我试图在Tomcat 7.0.40和jetty 9.0.3上运行它

它是一些Tomcat错误,还是EL正常工作? 如何在EL中调用带有null参数的方法?

更新1: 几个来源和文档(http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html)表示添加JVM属性

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

解决它。

但是当我设定它时,没有任何事情发生。我把它设置正确

System.getProperty("org.apache.el.parser.COERCE_TO_ZERO")` 

在运行时返回"false"

可能是Tomcat需要一些其他设置才能更改以使用此参数...

1 个答案:

答案 0 :(得分:-1)

据我所知,当你使用Null时,任何程序都会将Null值初始化为原语的默认值。这意味着int值将始终为0,double 0.0,boolean将为false等。

您可以做的是进行一些额外的测试,并验证方法开头的值是否为空,如果是,则进行一些额外的测试。