我有一个 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 需要一些其他设置来更改才能使用此参数...
最佳答案
据我所知,当您使用 Null 时,任何程序都会将 Null 值初始化为原语的默认值。这意味着 int 值将始终为 0,double 0.0,boolean 将为 false 等。
您可以做的是进行一些额外的测试,并验证方法开头的值是否为空,如果是,则进行一些额外的测试。
关于java - 在 EL 中调用带有 null 参数的方法最终传递的是 0 而不是 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16689715/