JSF 中资源 API 的 el 表达式嵌套

问题描述 投票:0回答:1
<p:graphicImage value="#{resource['images:primefaces-ui/#{car.manufacturer}.jpg']}"/>

我想先计算内部el,然后使用资源API计算路径。 我尝试了

<c:set>
标签,但它的变量也是 EL,所以没有任何区别。

jsf el
1个回答
27
投票

如果由于某种原因您确实无法使用

+=
,您可以使用
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" />
© www.soinside.com 2019 - 2024. All rights reserved.