10

我有一个 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 中调用具有空参数的方法?

更新 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 需要一些其他设置来更改以使用此参数...

4

1 回答 1

-1

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

你可以做的是做一些额外的测试,并在你的方法开始时验证这些值是否为空,如果是的话,做一些额外的测试。

于 2013-08-05T10:39:05.217 回答