簡體   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