tutorial rendered lenguaje language expresiones etiquetas condicion jsf internationalization el string-concatenation resourcebundle

jsf - rendered - Concatenación de cadenas en EL para la clave dinámica ResourceBundle



rendered primefaces (4)

Tengo un paquete de recursos con entradas como estas:

entry1=value1 entry2=value2 entry3=value3

En mi página JSF, intento usar estas claves dinámicamente. La identificación de la entrada proviene de un bean administrado. Creo que debería ser algo como esto:

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

¿Cómo puedo conseguir esto?


Creo que deberás escribir una función de facele concat(str1, str2) .


Esto debería resolver tu problema:

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


Esto es lo que funcionó para mí: concat fuera de []

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


Si ya está utilizando Servlet 3.1 / EL 3.0 (Tomcat 8, WildFly 8, GlassFish 4, etc.), utilice el nuevo operador EL 3.0 += :

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

Si solo está utilizando Servlet 3.0 / EL 2.2 (Tomcat 7, JBoss AS 6/7, GlassFish 3, etc.), utilice la nueva capacidad EL 2.2 para invocar directamente métodos como String#concat() :

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

Si aún no está en Servlet 3.0 / EL 2.2, utilice <c:set> para crear otra variable con la expresión EL deseada en línea:

<c:set var="key" value="entry#{managedBean.entryIndex}" /> <h:outputText value="#{msg[key]}" />