0

エラー: MyExchangeClass 型のメソッド exchangeConversion(String, String, float) は、引数 (String, String, double) には適用できません。

jsp ファイルのコード、15.4 および 15.4f でもエラーが発生しますが、double の関数と TLD を変更するとすべて正常に動作します。15.4 と 15.4f を double のように取るのはなぜですか?

...
From GBP to USD: ${ elfuncs:exchange("GBP", "USD", 15.4f) }
Otherwise: ${ elfuncs:exchange("GBP", "YEN", 15.4) }

TLD のコード

  <function>
    <name>exchange</name>
    <function-class>mypackage.MyExchangeClass</function-class>
    <function-signature>float exchangeConversion(java.lang.String, java.lang.String, float)</function-signature>
  </function>

Java クラスのコード public class MyExchangeClass {

    public static float exchangeConversion(String from, String to, float amount) { 
        float calculatedAmount = 0.0f;

        /* Example implementation code: */
        if(from.equals("GBP") && to.equals("USD")) {
            calculatedAmount = amount*1.5f;
        }
        return calculatedAmount; 
    }
}
4

1 に答える 1

0

EL仕様でそのように指定されているためです。浮動小数点リテラルは常に として解釈されdoubleます。

1.3 リテラル

evalexpression には、ブール、整数、浮動小数点、文字列、および null のリテラルがあります。

...

  • 浮動小数点 -FloatingPointLiteralセクション 1.19 の構文で定義されているとおり。

1.19 収集された構文

...

  • a の値は から までの範囲FloatingPointLiteralです。Double.MIN_VALUEDouble.MAX_VALUE

関数内で に変更floatするだけdoubleです。

于 2013-02-21T13:31:34.443 に答える