Sto creando un elenco a discesa di tutte le lingue. La selezione della lingua predefinita per la lista sarà determinato da informazioni aggiunte dall'utente:Come confrontare due variabili oggetto nel linguaggio di espressione EL?
<select>
<c:forEach items="${languages}" var="lang">
<c:choose>
<c:when test="${lang}.equals(${pageLang})">
<option value="${lang}" selected>${lang}</option>
</c:when>
<c:otherwise>
<option value="${lang}">${lang}</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
.equals
non sembra esistere in EL. Avendo dato un'occhiata qui suggerisco di scrivere la mia funzione e poi importarla e usarla. Dato che questa è una piccola cosa solo per questa pagina, non voglio dover iniziare a creare librerie ecc solo per questo. Né voglio iniziare a creare oggetti specializzati per il servlet da restituire con queste informazioni extra in loro.
L'unica cosa che mi viene in mente di fare è quello di restituire il codice HTML effettivo per l'intera linea di opzione dal servlet piuttosto che solo la stringa di lingua, ma che mi sembra brutto quindi spero ci sia una soluzione più elegante.
Qual è il piano migliore per una soluzione rapida per il confronto di due stringhe in EL?
Suppongo di poter usare anche 'test =" $ {lang eq 'en'} "? Vedo 'eq' lassù, ma non con le costanti stringa? Basta fare in modo, non lo faccio spesso io con JSTL lingua/espressione spesso – SuckerForMayhem
@Sucker: 'eq' è un alias per' == '. Fanno esattamente la stessa cosa. Vedi anche [operatori in EL] (http://docs.oracle.com/javaee/6/tutorial/doc/bnaik.html). – BalusC
Funziona ECCETTO in un caso di comparazione delle stringhe di 1 lettera. Poi si dovrebbe usare (swap semplice per i doppi apici) http://struts.apache.org/release/2.0.x/docs/why-wont -la-se-tag-valutare-a-uno-char-string.html –
exoddus