web-dev-qa-db-de.com

Soll ich == oder eq wählen, um den String in EL zu vergleichen?

== Und eq liefern dasselbe Ergebnis mit EL, um meine String-Vergleichstests durchzuführen:

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

Soll ich stattdessen eq verwenden? Ist == Nur für ganze Zahlen? Es funktioniert aber auch für Streicher. AFAIK == Testet, ob hashCodes gleich sind und eq bedeutet "sinnvoll anders".

Ein anderes Frage sagt, dass == Und eq dasselbe tun.

Gibt es hier keinen Unterschied? IS nicht der Unterschied, den ich darstelle: == Betrachtet den Hashcode und eq die Implementierung von equals(...).

44

Sie sind beide gleich. Ich benutze eq in EL, da es lesbarer ist als ein Satz.

44
adarshr

Beide sind gleich. Beide == und eq führen zu folgendem Code:

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

für EL

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

Laut Dokumentation ist es dasselbe

Zusätzlich zu . und [] -Operatoren, die in Wert- und Methodenausdrücken erläutert werden, bietet die EL die folgenden Operatoren, die nur in rWert-Ausdrücken verwendet werden können:
[...]
Relational : ==, Gl. ,! = , ne, <, lt,>, gt, <=, ge,> =, le. Vergleiche können mit anderen Werten oder mit Booleschen Literalen, Zeichenfolgenliteralen, Ganzzahlliteralen oder Gleitkommaliteralen durchgeführt werden.

Ein Unterschied: String-Operatoren wie eq, ne, lt, gt, ge, le existieren, da sie XML-sicher sind, müssen sie nicht wie <= zum Beispiel.

Es wird erklärt hier

Ein nützliches Merkmal der EL ist die Fähigkeit, Vergleiche zwischen Zahlen oder Objekten durchzuführen. Diese Funktion wird hauptsächlich für die Werte von benutzerdefinierten Tag-Attributen verwendet. Sie kann jedoch auch verwendet werden, um das Ergebnis eines Vergleichs (wahr oder falsch) auf die JSP-Seite zu schreiben. Die EL bietet folgende Vergleichsoperatoren:

• == oder Gl
•! = Oder ne
• <oder lt
•> oder gt
• <= oder le
•> = oder ge

Die zweite Version jedes Operators ist vorhanden, um zu vermeiden, dass Entitätsreferenzen in der JSP-XML-Syntax verwendet werden müssen. Das Verhalten der Bediener ist jedoch dasselbe.

23
ToYonos