2011-11-02 6 views
14
<p:graphicImage value="#{resource['images:primefaces-ui/#{car.manufacturer}.jpg']}"/> 

Me gustaría calcular el interior primero y luego calcular la ruta utilizando el recurso API. Probé la etiqueta <c:set> pero su variable también es un EL, por lo que no hace ninguna diferencia.anidamiento de las expresiones el en JSF para el recurso API

Respuesta

23

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

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 –

Cuestiones relacionadas