1

double 値を比較する次のシグネチャを使用して el 関数を作成しました。

java.lang.Number numberMinimum(java.lang.Number, java.lang.Number)

これはプリミティブ データ型を使用しても機能し
ますが、リソース バンドルの値を使用して呼び出すと、次のようになります。

java.lang.IllegalArgumentException: Cannot convert 99 of type class java.lang.String to class java.lang.Number
at com.sun.el.lang.ELSupport.coerceToType(ELSupport.java:412)
at com.sun.el.parser.AstFunction.getValue(AstFunction.java:123)

パラメータをリソース値が割り当てられているプリミティブintに変更すると機能しますか?

int intMinimum(int, int)

目的のターゲットが int 型であるが数値に対して機能しない場合、式言語がそれを int に自動変換するのはなぜですか?

4

3 に答える 3

0

文字列は自動的に数値に変換されません。numberMinimum()メソッドをオーバーロードして、文字列を Number に変換することを検討してください。

お役に立てれば!

于 2013-02-01T18:10:07.353 に答える
0

別の機能を追加します。

java.lang.Number numberMinimum(java.lang.String, java.lang.String)

その関数では、文字列を数値に変換し (文字列を Double に変換 - Java )、java.lang.Number numberMinimum(java.lang.Number, java.lang.Number)

于 2013-02-01T17:56:45.173 に答える
0

El は直接 Number に変換できませんが、継承クラスに対してのみです:

com.sun.el.lang.ELSupport.coerceToType(ELSupport.java:412) は、ターゲットの型が Number 自体を実装していない型であるかどうかをチェックします。

ターゲットの型が Number 型の場合、double を使用するようなデフォルトの実装はありません。

http://grepcode.com/file/repo1.maven.org/maven2/org.mortbay.jetty/jsp-2.1/6.1.1rc1/com/sun/el/lang/ELArithmetic.java#ELArithmetic.isNumberType%28java. lang.Class%29

于 2013-02-01T18:28:36.790 に答える