2011-04-18 30 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

相关问题