10

私は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 で他の設定を変更する必要があるかもしれません...

4

1 に答える 1

-1

私の知る限り、Null を使用する場合、どのプログラムでも Null 値をプリミティブのデフォルト値に初期化するように作られています。つまり、int 値は常に 0、double 0.0、boolean は false などになります。

あなたができることは、いくつかの追加のテストを行い、メソッドの最初で値が null であるかどうかを確認し、そうである場合は、いくつかの追加のテストを行うことです。

于 2013-08-05T10:39:05.217 に答える