的行为
==未更改,但是的行为
{expr}已更改…关于版本:
在JSP规范的向后兼容部分中,
如果指定的版本小于2.1,则{expr}语法仅作为String文字处理。
因此,在EL 2.0之前,所有内容都将被视为字符串文字,并与
.equalsas
==进行比较,然后将其
equals内部转换为,但是在2.1中,它将不会转换为字符串,并会抛出异常,
javax.el.ELException:Cannot convert No of type class java.lang.String to class java.lang.Long
关于比较:
在EL版本2.1的JSP规范JSP.2.3.5.7中,指定了以下内容…
如果A为null或B为null,则对于==或eq返回false,对于!=或ne返回true
如果A或B为Byte,Short,Character,Integer或Long将A和B都强制转换为Long,则应用运算符
所以,在第一种情况下,
${1 =="" } // ans is false as second one is null as per 1st rule.在第二种情况下
${1 =="4" } // ans is false as both are different after coercing to Long as per 2nd rule.在内部类型转换的情况下,以上两种情况都将被强制为long。
但是在第三种情况下不是,
${1=="Yes"}在第二种情况下,不能将字符串转换(强制)为Long,并且java.el.ELException将抛出消息“无法将类型java.lang.String类型的No转换为java.lang.Long类型”。



