Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在EL中使用null参数调用方法的结果是传递0而不是null_Java_Tomcat_Spring Mvc_El - Fatal编程技术网

Java 在EL中使用null参数调用方法的结果是传递0而不是null

Java 在EL中使用null参数调用方法的结果是传递0而不是null,java,tomcat,spring-mvc,el,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)}"/> 而非预期 arg0 = null arg1 = null 我试着在Tomcat 7.0.40和jetty 9.0

我有一个POJO:

public class Foo {
    public String getValue(Integer arg0, BigDecimal arg1) {...}
}
我将它作为Spring MVC的模型参数放入JSP中,并尝试使用它:

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

arg0 = null
arg1 = null
我试着在Tomcat 7.0.40和jetty 9.0.3上运行它

这是Tomcat的错误,还是EL的工作方式正确? 在EL中,如何使用空参数调用方法

更新1: 有几个来源和文档()说添加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等等


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

有一些东西不能让我信服
。在使用JSTL时,不能以这种方式调用方法。您可以改为访问属性
${foo.value}
,相应的getter将在后台调用。此外,您不能传递参数,因为假定getter是parameterless@maVVamaldo,在EL 2.2中是可能的。具有相同的问题。在Tomcat7 catalina.properties文件和ServletContextLoader中都设置了强制为零的属性,但该属性无效。@azgolfer,这仍然是实际问题。如果您能找到一些解决方案(使用glassfish而不是Tomcat不起作用),请告诉我。Integer和BigDecimal标记为null,但不标记为0。只需Tomcat EL解释程序将其设置为0。所以在foo.getValue(…)中,我只能得到0。
System.getProperty("org.apache.el.parser.COERCE_TO_ZERO")`