Pao*_*olo 9 java jsp weblogic el
我有这种行为我真的不明白
${someVar} ${someVar.class.name} ${someVar == 'error'}
输出
false java.lang.Boolean true
McD*_*ell 14
这是EL规范中定义的语言行为:
A {==,!=,eq,ne} B. 其他规则省略了 如果A或B是布尔值,则将A和B强制为布尔值,则应用运算符 将A强制转换为布尔值 如果A为null或"",则返回false 否则,如果A是布尔值,则返回A. 否则,如果A是String,并且Boolean.valueOf(A)不抛出异常,则返回它 否则,错误
因此,字符串文字被强制通过一个布尔Boolean.valueOf("error")其返回false.
Boolean.valueOf("error")
Bal*_*usC 6
如果EL中的一方是Boolean(或boolean),而另一方是a String,则将通过其javadoc说明以下内容String进行解析:BooleanBoolean#valueOf()
Boolean
boolean
String
Boolean#valueOf()
返回Boolean带有指定字符串表示的值的a.在Boolean返回的代表true值,如果字符串参数不null并等于,忽略大小写,字符串"真".
true
null
所以,它返回false,这确实等于false.
false
您需要重写EL表达式以考虑类型可以是布尔值和字符串,或者只是坚持单一类型而不是在单个属性中混合类型.
归档时间:
14 年 前
查看次数:
10530 次
最近记录:
12 年,2 月 前