我有这种行为,我不太了解
${someVar} ${someVar.class.name} ${someVar == 'error'}
输出
false java.lang.Boolean true
这是EL规范中定义的语言的行为:
A {==,!=,eq,ne} B 遗漏了其他规则 如果A或B为布尔值,则将A和B都强制转换为布尔值,则应用运算符 将A强制转换为布尔 如果A为null或“”,则返回false 否则,如果A为布尔值,则返回A 否则, 如果A是一个字符串,并且Boolean.valueOf(A)没有引发异常,则将其返回 否则,错误
因此,该字符串是强制转换为布尔通过Boolean.valueOf("error")其返回false。
Boolean.valueOf("error")