2012-05-29 15 views
40

== y eq dan el mismo resultado utilizando EL hacer mis pruebas de comparación de cadena:¿Debo elegir == o eq para comparar cadenas en 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> 

¿Debo usar eq en su lugar? ¿Es == solo para enteros? Pero funciona también para cadenas. AFAIK == prueba si los hashCodes son iguales y eq significa "significativamente diferente".

Otro question dice == y eq hacen lo mismo.

¿No hay diferencia aquí? NO es la diferencia la que estoy diciendo: == mira el hashCode y eq mira la implementación de equals(...).

+2

Dice que == y 'eq' hacen lo mismo, por lo que hacen lo mismo. – EJP

Respuesta

38

Ambos son lo mismo. Uso eq en EL, ya que es más legible como una oración.

23

Ambos son iguales. Tanto == y eq dará como resultado el siguiente código:

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

para EL

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

Gracias por la respuesta. –

20

Según documentation, que es la misma cosa

Además de la. operadores y [] discutidos en Valor y Método expresiones, el EL proporciona los siguientes operadores, los cuales pueden ser utilizados en sólo expresiones rvalue:
[...]
relacional: ==, EQ, =, ne, <, lt,>, gt, < =, ge,> =, le. Se pueden hacer comparaciones con otros valores o contra literales booleanos, de cadena, enteros o de coma flotante. aunque

Una diferencia: existe operadores de cadena como eq, ne, lt, gt, ge, le ya que son XML seguros, no tendrían que ser escapado como <= por ejemplo.

Se explica here

Una característica útil de la EL es la capacidad de realizar comparaciones, ya sea entre los números u objetos. Esta característica se usa principalmente para los valores de los atributos de etiquetas personalizadas, pero también se puede usar para escribir el resultado de una comparación (verdadera o falsa) en la página JSP. El EL proporciona los siguientes operadores de comparación:!

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

La segunda versión de cada operador existe para evitar tener que utilizar referencias de entidad en la sintaxis JSP XML; sin embargo, el comportamiento de los operadores es el mismo.

Cuestiones relacionadas