web-dev-qa-db-fra.com

Devrais-je choisir == ou eq pour comparer une chaîne dans EL?

== Et eq donnent le même résultat en utilisant EL pour faire mes tests de comparaison de chaînes:

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

Devrais-je utiliser eq à la place? Est-ce que == Ne concerne que les entiers? Mais cela fonctionne aussi pour les chaînes. Autant que je sache ==, Vérifiez si les hashCodes sont égaux et que eq signifie "sensiblement différent".

Une autre question dit que == Et eq font la même chose.

N'y a-t-il pas de différence ici? IS n'est pas la différence de celle que je dis: == Examine le hashCode et eq examine l'implémentation de equals(...).

44

Ils sont les mêmes. J'utilise eq dans EL car il est plus lisible qu'une phrase.

44
adarshr

Les deux sont les même. Tous les deux == et eq donneront le code suivant:

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

pour EL

${person.sokande_i == 'endast_usa'}
26
Ramesh PVK

Selon documentation , c'est la même chose

En plus de . et [], décrits dans Expressions de valeur et de méthode, EL fournit les opérateurs suivants, qui ne peuvent être utilisés que dans des expressions rvalue:
[...]
Relationnel : ==, eq ,! = , ne, <, lt,>, gt, <=, ge,> =, le. Des comparaisons peuvent être effectuées avec d'autres valeurs ou avec des littéraux booléens, de chaînes, d'entiers ou à virgule flottante.

Une différence cependant: les opérateurs de chaîne comme eq, ne, lt, gt, ge, le existent comme ils sont sûrs en XML, ils n’auraient pas besoin d’être échappés comme <= par exemple.

C'est expliqué ici

Une caractéristique utile du EL est la possibilité d'effectuer des comparaisons, que ce soit entre des nombres ou des objets. Cette fonctionnalité est principalement utilisée pour les valeurs des attributs de balises personnalisés, mais peut également être utilisée pour écrire le résultat d'une comparaison (true ou false) avec la page JSP. Le EL fournit les opérateurs de comparaison suivants:

• == ou eq
•! = Ou ne
• <ou lt
•> ou gt
• <= ou le
•> = ou ge

La deuxième version de chaque opérateur existe pour éviter de devoir utiliser des références d'entité dans la syntaxe JSP XML; Cependant, le comportement des opérateurs est le même.

23
ToYonos