我应该选择==或eq来比较EL中的字符串吗?

时间:2012-05-29 09:24:03

标签: java java-ee el websphere-8

==eq使用EL进行相同的结果来进行字符串比较测试:

    <c:if test="${person.sokande_i == 'endast_usa'}">Endast USA</c:if>
    <c:if test="${person.sokande_i == 'alla'}">Alla länder</c:if>
    <c:if test="${person.sokande_i == 'alla_utom_usa'}">Alla utom USA</c:if>

我应该使用eq吗? ==仅适用于整数吗?但它也适用于字符串。 AFAIK ==测试hashCodes是否相等,eq表示“有意义的不同”。

另一个question==eq做同样的事情。

这里没有区别吗?与我说的不同之处在于:==查看hashCode,eq查看equals(...)的实现。

3 个答案:

答案 0 :(得分:43)

他们都是一样的。我在EL中使用eq,因为它更像句子一样可读。

答案 1 :(得分:26)

两者都是一样的。 ==eq都会生成以下代码:

jspContext.findAttribute("person.sokande_i").equals("endast_usa")
EL的

${person.sokande_i == 'endast_usa'}

答案 2 :(得分:23)

根据documentation,它是一样的

  

除了。 EL和[]运算符在值和方法表达式中讨论,EL提供以下运算符,只能在rvalue表达式中使用:
  [...]
  关系 ==,eq ,!=,ne,&lt;,lt,&gt;,gt,&lt; =,ge,&gt; =,le。可以与其他值或布尔值,字符串,整数或浮点文字进行比较。

但有一点不同:像eq, ne, lt, gt, ge, le这样的字符串运算符是存在的,因为它们是XML安全的,例如它们不需要像<=那样进行转义。

解释here

  

EL的一个有用功能是能够在数字或对象之间进行比较。此功能主要用于自定义标记属性的值,但同样可用于将比较结果(true或false)写入JSP页面。 EL提供以下比较运算符:

     

•==或eq
  •!=或ne
  •&lt;或者lt   •&gt;或gt
  •&lt; =或le
  •&gt; =或ge

     

每个运算符的第二个版本的存在是为了避免在JSP XML语法中使用实体引用;但是,运营商的行为是一样的。