Java EL表达式中的字符比较
我想这样做:Java EL表达式中的字符比较,java,jsp,comparison,char,el,Java,Jsp,Comparison,Char,El,我想这样做: <c:if test="${somestring.charAt(0)=='1'}"> tadaaaam </c:if> 它是“1”,但上面的比较失败。比较如下: if(somestring.charAt(0)=='1') 纯Java中的worx(条件为true) 有什么想法吗?EL似乎对char有问题。这是我唯一能让它工作的方法 <c:if test="${somestring.charAt(0) == '1'.charAt(0)}" >
<c:if test="${somestring.charAt(0)=='1'}">
tadaaaam
</c:if>
它是“1”,但上面的比较失败。比较如下:
if(somestring.charAt(0)=='1')
纯Java中的worx(条件为true)
有什么想法吗?EL似乎对char有问题。这是我唯一能让它工作的方法
<c:if test="${somestring.charAt(0) == '1'.charAt(0)}" >
tadaaaam
</c:if>
塔达姆
行为完全符合预期和EL规范的要求。如果采用EL规范的2.2版,则需要查看第1.8.2节,该节提供了“==”运算符的规则
这种情况下的操作数是somestring.charAt(0)
,它是char
和'1'
,它是String
(不是char),因为字符串可以用EL中的单引号或双引号分隔
假设我们有Character==String,那么1.8.2中的第六个项目符号将应用,并且这两个项目符号都强制为长值。字符将强制为49(1的ASCII码),1强制为1。这些不相等,因此你会看到结果
我理解这不是您所期望的,但这是规范所要求的行为,由EL中的单引号分隔字符串而不是字符触发。无法在tomcat 7上重现。也许你可以给我们看看实际的代码,但它不起作用?我在Tomcat7上运行它。也许您没有将JSTL库添加到项目中谢谢,它是这样工作的:)我不知道在本例中“1”是字符串。谢谢您的回复1'实际上是一根弦。我错误地认为这是一个字符,我必须阅读更多的说明:)
<c:if test="${somestring.charAt(0) == '1'.charAt(0)}" >
tadaaaam
</c:if>