【问题标题】:Should I choose == or eq for comparing string in EL?我应该选择 == 还是 eq 来比较 EL 中的字符串?
【发布时间】:2012-05-29 09:24:02
【问题描述】:

==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(...) 的实现。

【问题讨论】:

  • 它说 == 和 'eq' 做同样的事情,所以他们做同样的事情。

标签: java jakarta-ee el websphere-8


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    根据documentation,是一样的

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

    但有一个区别:像 eq, ne, lt, gt, ge, le 这样的字符串运算符存在,因为它们是 XML 安全的,它们不需要像 &lt;= 这样被转义。

    解释了here

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

    • == 或 eq
    • != 或 ne
    • • > 或 gt
    • • >= 或 ge

    每个运算符的第二个版本的存在是为了避免在 JSP XML 语法中使用实体引用;但是,操作员的行为是相同的。

    【讨论】:

      【解决方案3】:

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

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

      对于 EL

      ${person.sokande_i == 'endast_usa'}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-11
        • 1970-01-01
        • 1970-01-01
        • 2012-12-12
        • 2012-06-08
        • 2023-03-25
        • 1970-01-01
        • 2015-09-21
        相关资源
        最近更新 更多