2011-04-18 36 views
3

我想從我的支持bean 具有功能如何ArrayList中/列表/ iterables參數傳遞給JSF1.2自定義組件

public getImgList(){ 
    return ArrayList<string>imgPathList; 
} 

現在這個名單必須是顯示圖像的列表渲染到並排顯示的等效輸出 圖像。 像

[image][image][image] 

這是不可能的,如果我使用<h:datatable>,因爲它會使所有的人每行一個, ,我不能找到,我可以使用自定義組件,我將不得不使它們 任何方法將圖像的列表傳遞給 自定義組件。 任何人都可以請解釋如何將列表傳遞給JSF 1.2 Mojarra中的自定義組件?

回答

5

只需指定它作爲屬性。

<my:component value="#{bean.imagePaths}" /> 

這將只是可作爲正好在你的自定義組件類與UIComponent#getValueExpression()幫助value屬性類型相同。


鑑於你已經問這個微不足道的問題,我想開發自定義組件是要花費大量的時間爲您服務。另外,由於很多解決方案已經存在,您基本上在這裏重新發明輪子。我建議採取不同的路線,即只使用現有的標籤/組件。有兩種選擇:

  • 使用JSTL <c:forEach>。如果你不把它放在另一個迭代組件中,如<h:dataTable>,並且你沒有渲染循環中的輸入元素,這將起作用。

    <c:forEach items="#{bean.imagePaths}" var="imagePath"> 
        <img src="#{imagePath}" /> 
    </c:forEach> 
    
  • 使用第三方組件庫,它提供了一個fullworthy JSF組件迭代不呈現任何HTML。我建議Tomahawk's<t:dataList>

    <t:dataList value="#{bean.imagePaths}" var="imagePath"> 
        <img src="#{imagePath}" /> 
    </t:dataList> 
    
+0

感謝您的回覆,我會寫一個自定義組件的圖像是一個內部的已因此不能使用JSTL和我不能使用第三方庫(企業指南)因此,我將不得不去定製組件的方式。順便說一句,因爲我從'UIComponentBase'而不是'UIComponent'擴展組件,所以我們必須使用[UIComponentBase#getAttributes](http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/javax/面/組件/ UIComponent.html#的getAttributes()) – 2011-04-19 03:39:56

相關問題