繁体   English   中英

EL中具有null参数的调用方法最终以传递0而不是null结束

[英]Calling method with null parameters in EL ends up in 0 being passed instead of null

我有一个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和码头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,双精度为0.0,布尔值为false等。

您可以做的是进行一些附加的测试,并在方法开始时验证值是否为null,如果是,则进行一些附加的测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM