48 votes

Devrais-je choisir == ou eq pour comparer des chaînes de caractères en EL?

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

    Endast USA
    Alla länder
    Alla utom USA

Devrais-je utiliser eq à la place? == est-il uniquement pour les entiers? Mais il fonctionne aussi pour les chaînes. À ma connaissance, == teste si les hashCodes sont égaux et eq signifie "différent de manière significative".

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

N'y a-t-il pas de différence ici? La différence n'est-elle pas celle que je déclare : == regarde le hashCode et eq regarde l'implémentation de equals(...).

48voto

adarshr Points 25912

Ils sont tous les deux pareils. J'utilise eq en EL car c'est plus lisible comme une phrase.

29voto

ToYonos Points 10347

Selon la documentation, c'est la même chose

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

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

C'est expliqué ici

Une fonctionnalité utile de l'EL est la capacité à effectuer des comparaisons, soit entre des nombres, soit entre des objets. Cette fonctionnalité est principalement utilisée pour les valeurs des attributs d'une balise personnalisée, mais peut également être utilisée pour afficher le résultat d'une comparaison (vrai ou faux) sur la page JSP. L'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 d'avoir à utiliser des références d'entité dans la syntaxe XML JSP; cependant, le comportement des opérateurs est le même.

27voto

Ramesh PVK Points 7415

Tous sont identiques. Tant == que eq donneront le code suivant :

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

pour EL

${person.sokande_i == 'endast_usa'}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X