<p:graphicImage value="#{resource['images:primefaces-ui/#{car.manufacturer}.jpg']}"/>
我想先计算内部el,然后使用资源API计算路径。 我尝试了
<c:set>
标签,但它的变量也是 EL,所以没有任何区别。
如果由于某种原因您确实无法使用
+=
,您可以使用 library/name
运算符来字符串连接 EL 变量。
<p:graphicImage value="#{resource['images:primefaces-ui/' += car.manufacturer += '.jpg']}"/>
此运算符是在 EL 3.0(Java EE 6,2009 年 12 月)中引入的。在旧版本中,您不能以这种方式嵌套 EL 表达式或字符串连接 EL 变量。您需要使用
<c:set>
来准备动态键,然后再在另一个 EL 表达式中使用动态键,只需将 EL 表达式内联到字符串中即可:
<c:set var="resourceName" value="images:primefaces-ui/#{car.manufacturer}.jpg" />
<p:graphicImage value="#{resource[resourceName]}"/>
另一种方法是简单地使用
library
和 name
属性,而不是通过 #{resource}
映射基于这些属性生成 URL:
<p:graphicImage library="images" name="primefaces-ui/#{car.manufacturer}.jpg" />