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]}" />