Подтвердить что ты не робот

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

== и 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 == проверяет, равны ли хэш-коды и eq означает "значимо разные".

Другой question говорит, что == и eq делают то же самое.

Разница здесь отсутствует? Разница не в том, что я заявляю: == смотрит на hashCode и eq смотрит на реализацию equals(...).

4b9b3361

Ответ 1

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

Ответ 2

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

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

для EL

${person.sokande_i == 'endast_usa'}

Ответ 3

Согласно документации, это то же самое

В дополнение к. и [], обсуждаемые в выражениях Value и Method, EL предоставляет следующие операторы, которые могут использоваться только в выражениях rvalue:
[...]
Реляционная: ==, eq,! =, ne, <, lt → gt, < =, ge, > =, le. Сравнения могут быть сделаны против других значений или против логических, строковых, целочисленных или плавающих символов.

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

Он объяснил здесь

Полезной особенностью EL является способность выполнять сравнения, будь то между числами или объектами. Эта функция используется в основном для значений атрибутов пользовательских тегов, но в равной мере может использоваться для записи результата сравнения (истина или ложь) на страницу JSP. EL предоставляет следующие операторы сравнения:

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

Вторая версия каждого оператора существует, чтобы избежать необходимости использовать ссылки на сущности в синтаксисе JSP XML; однако поведение операторов одинаково.