如何将float arg传递给自定义EL函数(jsp)?

时间:2013-02-21 12:38:59

标签: function tags el jsp-tags taglib

错误: MyExchangeClass类型中的方法exchangeConversion(String,String,float)不适用于参数(String,String,double)

jsp文件中的代码,错误与15.4和15.4f,但如果更改功能和TLD为double都可以正常工作。为什么15.4和15.4f好像是双打?

...
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类的代码     公共类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; 
    }
}

1 个答案:

答案 0 :(得分:0)

因为在EL specification中指定了这一点。浮点文字始终被解释为double

  

1.3文字

     

在evalexpression中有布尔值,整数,浮点,字符串和null的文字。

     

...

     
      
  • 浮点 - 由FloatingPointLiteral构造中的定义   第1.19节。
  •   
  

1.19收集的语法

     

...

     
      
  • FloatingPointLiteral的值范围从Double.MIN_VALUEDouble.MAX_VALUE
  •   

只需在您的函数中将float更改为double