2012-05-29 7 views
40

== e eq danno lo stesso risultato utilizzando EL per fare le mie prove di confronto stringa:Dovrei scegliere == o eq per confrontare la stringa in 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> 

Dovrei usare eq invece? == solo per numeri interi? Ma funziona anche per le stringhe. AFAIK == verifica se i codici hash sono uguali e eq significa "significativamente diverso".

Un altro question dice == e eq fare la stessa cosa.

Non c'è alcuna differenza qui? Non è la differenza quello che sto affermando: == esamina l'hashCode e eq esamina l'implementazione di equals(...).

+2

Dice che == e 'eq' fanno la stessa cosa, quindi fanno la stessa cosa. – EJP

risposta

38

Sono tutti uguali. Io uso eq in EL poiché è più leggibile come una frase.

23

Entrambi sono uguali. Sia == e eq si tradurrà nel codice seguente:

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

per EL

${person.sokande_i == 'endast_usa'} 
+0

Grazie per la risposta. –

20

Secondo documentation, è la stessa cosa

Oltre al. e [] operatori discussi in valore e metodo espressioni, il EL fornisce i seguenti operatori, che possono essere utilizzati solo in espressioni rvalue:
[...]
relazionale: ==, eq, =, ne, , lt,>, gt, < =, ge,> =, le. I confronti possono essere fatti contro altri valori o contro valori letterali booleani, a stringa, interi o virgola mobile.

Una differenza però: operatori di stringa come eq, ne, lt, gt, ge, le esiste in quanto sono sicuri XML, non avrebbero bisogno di essere sfuggito come <= per esempio.

E 'spiegato here

Una caratteristica utile del EL è la capacità di eseguire confronti, sia tra i numeri o oggetti. Questa funzione viene utilizzata principalmente per i valori degli attributi di tag personalizzati, ma può essere utilizzata anche per scrivere il risultato di un confronto (vero o falso) sulla pagina JSP. Il EL fornisce i seguenti operatori di confronto:!

• == o eq
• = o ne
• < o lt
•> o GT
• < = o le
•> = o ge

La seconda versione di ciascun operatore esiste per evitare di dover utilizzare riferimenti di entità nella sintassi XML JSP; tuttavia, il comportamento degli operatori è lo stesso.