Il concatenamento di stringhe in EL dinamico ResourceBundle chiave

Ho un pacchetto di risorse di voci come queste:

entry1=value1
entry2=value2
entry3=value3

Nella mia pagina JSF sto cercando di utilizzare questi tasti in modo dinamico. L’ID della voce proviene da un managed bean. Penso che dovrebbe essere qualcosa di simile a questo:

<h:outputText value="#{msg['entry' managedBean.entryIndex]}"/>

Come posso realizzare questo?

InformationsquelleAutor gulygab | 2011-01-31

 

4 Replies
  1. 44

    Se sei già su Servlet 3.1 /EL 3.0 (Tomcat 8, WildFly 8, GlassFish 4, ecc), fare uso di nuovo EL 3.0 += operatore:

    <h:outputText value="#{msg['entry' += managedBean.entryIndex]}" />

    Se sei solo Servlet 3.0 /EL 2.2 (Tomcat 7, JBoss AS 6/7, GlassFish 3, ecc), fare uso di nuovo EL 2.2 capacità di richiamare direttamente i metodi come String#concat():

    <h:outputText value="#{msg['entry'.concat(managedBean.entryIndex)]}" />

    Se sei anche Servlet 3.0 /EL 2.2 di sicurezza, utilizzare <c:set> creare un’altra variabile con il nome di EL espressione inline:

    <c:set var="key" value="entry#{managedBean.entryIndex}" />
    <h:outputText value="#{msg[key]}" />
    • ho sperato che c’è una sola linea modo per questo, ma questo facelet versione è abbastanza buono. grazie mille
    • Sei il benvenuto. Si noti che questo è un EL restrizione, non JSF restrizione. EL non dispone di strutture per la concatenazione di stringhe all’interno di un’espressione.
  2. 8

    Questo dovrebbe risolvere il tuo problema:

    <h:outputText value="#{msg['entry'.concat(managedBean.entryIndex)]}"/>
  3. 2

    Ecco che cosa ha funzionato per me : concat al di fuori di []

    <h:outputText value="#{msg['entry'].concat(managedBean.entryIndex)}" />
  4. 0

    Penso che dovrete scrivere un facelets funzione concat(str1, str2).

    • grazie mille per il suggerimento, funziona bene con un facelet funzione.

Lascia un commento