我应该select==还是eq来比较EL中的string?

==eq给出了相同的结果使用EL来做我的string比较testing:

  <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吗? ==只是整数? 但它也适用于string。 AFAIK ==testinghashCodes是否相等, eq意思是“有意义的不同”。

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

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

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

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

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

EL

 ${person.sokande_i == 'endast_usa'} 

根据文件 ,这是同样的事情

除了。 和[]运算符在“值和方法expression式”中讨论,EL提供以下运算符,它们只能用于右值expression式中:
[…]
关系==,eq ,!=,ne,<,lt,>,gt,<=,ge,> =,le。 可以针对其他值或布尔,string,整数或浮点文字进行比较。

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

这里解释

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

•==或eq
•!=或者ne
•<或<
•>或者
•<=或le
•> =或ge

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