En la versión EL 2.2 actual, no puede anidar expresiones EL ni variables de concatenación de cadenas de caracteres EL de esa manera. Utilice <c:set>
para preparar la dinámica de claves antes de usarlo en otra expresión EL simplemente inlining la expresión EL en una cadena:
<c:set var="resourceName" value="images:primefaces-ui/#{car.manufacturer}.jpg" />
<p:graphicImage value="#{resource[resourceName]}"/>
Una alternativa es simplemente usando library
y name
atributos en lugar de generar una URL basada en los a través de #{resource}
mapeo:
<p:graphicImage library="images" name="primefaces-ui/#{car.manufacturer}.jpg" />
actualización: desde eL 3.0, se puede utilizar el operador +=
a String-c oncatenar las variables EL, si realmente no puede usar library/name
por algún motivo.
<p:graphicImage value="#{resource['images:primefaces-ui/' += car.manufacturer += '.jpg']}"/>
Sin embargo, esto se basa en un detalle de implementación de ui: param - no promete establecer la variable en el contexto de la plantilla actual. Haré referencia a la respuesta de BalusC: http://stackoverflow.com/a/20376916/1341535 –