nesting of el expressions in JSF for resource API
Asked Answered
M

1

16
<p:graphicImage value="#{resource['images:primefaces-ui/#{car.manufacturer}.jpg']}"/>

I would like to calculate the inner el first and then calculate the path using resource API. I tried <c:set> tag but its variable is also an EL, so it does not make any difference.

Mexico answered 2/11, 2011 at 2:11 Comment(0)
B
27

You can use the += operator to String-concatenate EL variables, if you really can't use library/name for some reason.

<p:graphicImage value="#{resource['images:primefaces-ui/' += car.manufacturer += '.jpg']}"/>

This operator was introduced in EL 3.0 (Java EE 6, December 2009). In older versions, you cannot nest EL expressions nor String-concatenate EL variables that way. You need to use <c:set> to prepare the dynamic key before using it in another EL expression by simply inlining the EL expression in a string:

<c:set var="resourceName" value="images:primefaces-ui/#{car.manufacturer}.jpg" />
<p:graphicImage value="#{resource[resourceName]}"/>

An alternative is simply using library and name attributes instead of generating an URL based on those via #{resource} mapping:

<p:graphicImage library="images" name="primefaces-ui/#{car.manufacturer}.jpg" />
Belicia answered 2/11, 2011 at 3:46 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.