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

我想首先計算inner el,然後使用資源API計算路徑。 我試過<c:set>標籤,但它的變量也是一個EL,所以它沒有任何區別。在JSF中爲資源API嵌套el表達式

回答

23

在當前EL 2.2版本中,您不能以這種方式嵌套EL表達式和字符串連接EL變量。使用<c:set>在另一個EL表達式用它通過簡單地內聯在一個串中的EL表達式之前準備動態鍵:

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

一個替代方案是簡單地使用libraryname屬性,而不是生成基於那些經由#{resource}一個URL製圖:

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

更新:因爲EL 3.0,你可以使用+=運營商爲String-C oncatenate EL變量,如果由於某種原因您確實無法使用library/name

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

雖然這是依賴於ui:param實現細節 - 它不承諾在當前模板上下文中設置變量。我會參考BalusC自己的答案:http://stackoverflow.com/a/20376916/1341535 –