在JSF中为资源API嵌套el表达式

时间:2011-11-02 02:11:05

标签: jsf el

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

我想首先计算内部el,然后使用资源API计算路径。 我试过<c:set>标签,但它的变量也是EL,所以它没有任何区别。

1 个答案:

答案 0 :(得分:23)

在当前的EL 2.2版本中,您不能以这种方式嵌套EL表达式或String-concatenate EL变量。使用<c:set>准备动态密钥,然后在另一个EL表达式中使用它,只需在字符串中内联EL表达式:

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

另一种方法是使用libraryname属性,而不是根据#{resource}映射生成网址:

<p:graphicImage library="images" name="primefaces-ui/#{car.manufacturer}.jpg" />

更新:从EL 3.0开始,如果由于某种原因确实无法使用+=,则可以使用library/name运算符来串联EL变量。 / p>

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