48

==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意味着“有意义的不同”。

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

这里没有区别吗?这不是我所说的区别:==查看 hashCode 并eq查看equals(...).

4

3 回答 3

48

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

于 2012-05-29T09:28:05.863 回答
28

根据文档,这是同一件事

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

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

这里解释了

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

• == 或 eq
• != 或 ne
• < 或 lt
• > 或 gt
• <= 或 le
• >= 或 ge

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

于 2014-12-29T11:49:45.617 回答
27

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

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

对于 EL

${person.sokande_i == 'endast_usa'}
于 2012-05-29T09:33:00.390 回答