jsf - string无法解析为Number

时间:2013-02-01 17:52:54

标签: java string jsf numbers implicit-conversion

我写了一个带有以下签名的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类型但不适用于数字?

3 个答案:

答案 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的默认实现。

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