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

まず、内部のエルを計算してから、リソースAPIを使用してパスを計算します。 <c:set>というタグを試しましたが、その変数もELであるため、違いはありません。リソースAPI用のJSFでのEL式のネスト化

答えて

23

現在のEL 2.2バージョンでは、EL式をネストすることも、EL式を文字列連結することもできません。単に文字列内のEL式をインライン化することにより、他のEL式で使用する前に、動的キーを準備するために<c:set>を使用します。

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

代替単に#{resource}を経由して、それらに基づいてlibraryname属性を使用して代わりのURLを生成していますマッピング:

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

更新:EL 3.0以来、あなたは文字列-Cに+=演算子を使用することができます何らかの理由で実際にlibrary/nameを使用できない場合、EL変数をoncatenateしてください。

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

これはui:param実装の詳細に依存していますが、現在のテンプレートコンテキストで変数を設定することはできません。 BalusC自身の回答を参照します:http://stackoverflow.com/a/20376916/1341535 –