java - 在 EL 中调用带有 null 参数的方法最终传递的是 0 而不是 null

标签 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 中调用带空参数的方法?

更新 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/

相关文章:

java - Spring MVC/hibernate 表单验证,不返回表单

java - 尝试对 .txt 文件中的 double 进行排序时遇到问题

java - 已注册的 Tomcat 服务器未出现在 netbeans 中

java - Tomcat 异常 : HTTP Status 500

java - 如何从html页面生成下载请求到spring mvc的 Controller

javascript - Spring MVC 中的下拉菜单

java - POST 后返回具有 @ManyToOne 关系的已保存实体

java - C# 中相当于 Java 整数文字前缀 0b 的是什么?

java - 字符数组列表,仅替换字符

java - IDEA +tomcat,重启tomcat后不会更新javaFile上的变化