【发布时间】:2013-05-17 09:12:34
【问题描述】:
我有一个 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 中调用带 null 参数的方法?
更新 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 需要更改一些其他设置才能使用此参数...
【问题讨论】:
-
这个
<c:set var="ans" value="${foo.getValue(null, null)}"/>无法说服我。使用 JSTL 时,您不能以这种方式调用方法。您可以访问属性而不是${foo.value},并且将在幕后调用相应的 getter。此外,您不能传递参数,因为它假定 getter 是无参数的 -
@maVVamaldo,在 EL 2.2 中是可能的。
-
有同样的问题。在 Tomcat7 catalina.properties 文件和 ServletContextLoader 中设置 COERCE_TO_ZERO 属性,但不起作用。
-
@azgolfer,这仍然是实际问题。如果您能找到一些解决方案(使用 glassfish 代替 Tomcat 不算数),请告诉我。
标签: java tomcat spring-mvc el