Вопрос по java – Должен ли я выбрать == или eq для сравнения строк в EL?

44

== а также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 вместо? Является== только для целых чисел? Но это работает и для строк. насколько мне известно== проверить, равны ли хэш-коды иeq означает «значительно отличается».

Другаявопрос говорит== а такжеeq сделать то же самое.

Здесь нет разницы? Это не та разница, которую я заявляю:== смотрит на хэш-код иeq смотрит на реализациюequals(...).

Там написано == и 'eq'; сделать то же самое, чтобы они сделали то же самое. user207421

Ваш Ответ

3   ответа
43

Они оба одинаковы. я используюeq в EL, как это более читабельно, как предложение.

26

Оба одинаковы. И то и другое== а такжеeq  приведет к следующему коду:

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

для EL

${person.sokande_i == 'endast_usa'}
Error: User Rate Limit Exceeded Niklas Rosencrantz
23

В соответствии сдокументацияэто одно и то же

In addition to the . and [] operators discussed in Value and Method Expressions, the EL provides the following operators, which can be used in rvalue expressions only:
[...]
Relational: ==, eq, !=, ne, <, lt, >, gt, <=, ge, >=, le. Comparisons can be made against other values or against Boolean, string, integer, or floating-point literals.

Однако есть одно отличие: строковые операторыeq, ne, lt, gt, ge, le существуют, поскольку они безопасны для XML, их не нужно экранировать, как<= например.

Это объяснилиВот

A useful feature of the EL is the ability to perform comparisons, either between numbers or objects. This feature is used primarily for the values of custom tag attributes, but can equally be used to write out the result of a comparison (true or false) to the JSP page. The EL provides the following comparison operators:

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

The second version of each operator exists to avoid having to use entity references in JSP XML syntax; however, the behavior of the operators is the same.

Похожие вопросы