2013-10-09 229 views
0

如何使用資源變量創建動態路徑?JSF動態資源路徑

<ui:repeat value="#{backgroundImageBean.images}" var="image"> 
     <p:graphicImage value="#{resource['/path/#{image}']}" 
     style="width: 100%; height: 100%" /> 
</ui:repeat> 

感謝

回答

3

只需使用name屬性,而不是value屬性。 value屬性佔用一個URL,而name屬性僅佔用唯一的資源名稱。然後它的解決方案與#{resource[name]}一樣。

<p:graphicImage name="path/#{image}" /> 
2

您的問題可以通過以下兩種方式之一來解決:

  1. 嵌入'/path/'一部分到你的模型,以便#{image}將返回完整路徑資源;
  2. 使用<ui:param>爲將要產生的圖像路徑創建一個別名和訪問資源時使用它:

    <ui:repeat value="#{backgroundImageBean.images}" var="image"> 
        <ui:param name="path" value="/path/#{image}" /> 
        <p:graphicImage value="#{resource[path]}" /> 
    </ui:repeat> 
    

如果你堅持這樣做的邏輯,而無需使用參數環境支持EL 2.2+那麼你可以使用String#concat()在資源表達式:

#{resource['/path/'.concat(not empty image ? image : '')}'