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

Nik*_*ntz 44 java el java-ee 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>
Run Code Online (Sandbox Code Playgroud)

我应该用eq吗?是==仅整数?但它也适用于字符串.AFAIK ==测试hashCodes是否相等并且eq意味着"有意义的不同".

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

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

ada*_*shr 45

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


Ram*_*PVK 26

两者都是一样的.双方==eq 会导致下面的代码:

jspContext.findAttribute("person.sokande_i").equals("endast_usa")
Run Code Online (Sandbox Code Playgroud)

对于EL

${person.sokande_i == 'endast_usa'}
Run Code Online (Sandbox Code Playgroud)


ToY*_*nos 25

根据文件,这是一回事

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

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

在这里解释

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

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

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