Comportamento dei ==
non è cambiato, ma il comportamento di {expr}
è cambiato ...
Chi versioni:
Nella sezione retrocompatibilità di JSP Specification,
Se la versione speci fi cato è meno di 2.1, quindi la sintassi {expr} è semplicemente elaborata come valore letterale String.
Quindi, finché EL 2.0 tutto sarà trattato come una stringa letterale e confrontati con .equals
come ==
saranno convertiti in equals
internamente (Reference here), ma in 2.1 non sarà convertito in stringa e getteranno un'eccezione dicendo che javax.el.ELException: Cannot convert No of type class java.lang.String to class java.lang.Long
a proposito di: bilanciamento
In JSP specification JSP.2.3.5.7 di EL versione 2.1, si precisa quanto segue ...
01.235.
Se A è nullo o B è nullo restituisce falso per == o eq, vero per!= O ne
Se A o B è Byte, Corto, Carattere, Integer, o costringere a lungo sia A e B a Long, applicare all'operatore
così, In primo caso,
${1 =="" } // ans is false as second one is null as per 1st rule.
, nel secondo caso,
${1 =="4" } // ans is false as both are different after coercing to Long as per 2nd rule.
Entrambi saranno forzati a long in caso precedente con conversione di tipo interna.
Ma non nel terzo caso, ${1 =="Yes" }
dove secondo è stringa non può essere convertito (costretto) a Long e java.el.ELException
saranno gettati con il messaggio "impossibile convertire No del tipo di classe java.lang.String di classe Java. lang.Long".
fonte
2014-07-11 13:01:49
forse utilizza internamente un convertitore di numeri se si utilizza eq sicuro che non getti un excp. – ZaoTaoBao
no. Anche eq lancia la stessa eccezione nelle nuove versioni JSP –