我写了一个带有以下签名的el函数,它比较了double值:
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类型但不适用于数字?
答案 0 :(得分:0)
添加其他功能:
java.lang.Number numberMinimum(java.lang.String, java.lang.String)
在该功能中,将字符串转换为数字(Convert a String to Double - Java)并调用java.lang.Number numberMinimum(java.lang.Number, java.lang.Number)
答案 1 :(得分:0)
String不会自动转换为Number。考虑通过重载 numberMinimum() 方法将字符串转换为数字。
希望这有帮助!
答案 2 :(得分:0)
El不能直接转换为Number继承类:
com.sun.el.lang.ELSupport.coerceToType(ELSupport.java:412)检查目标类型是否为实现Number但不是Number本身的任何类型。
如果目标类型的类型为Number,则没有使用double的默认实现。