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

2022-08-31 22:28:16

==并使用EL给出相同的结果来执行我的字符串比较测试:eq

    <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>

我应该改用吗?是否仅用于整数?但它也适用于字符串。AFAIK测试哈希码是否相等,并且意味着“有意义的不同”。eq====eq

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

这里没有区别吗?不是我说的区别:查看哈希代码并查看 的实现。==eqequals(...)


答案 1

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


答案 2

根据文档,这是一回事

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

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

这里解释

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

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

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


推荐