我正在尝试显示来自我的后台bean的图像列表它有一个函数
public getImgList(){
return ArrayList<string>imgPathList;
}
现在这个List必须被渲染成等价的输出并排显示的图像。像
[image][image][image]
这是不可能的,如果我使用<h:datatable>
,因为它会渲染所有的一行,我找不到任何方法来渲染它们使用自定义组件,因为我必须将图像的列表传递给自定义组件。谁能解释一下如何将列表传递给JSF 1.2 Mojarra中的自定义组件?
直接指定为属性。
<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>
使用第三方组件库,它提供了一个完整的JSF迭代组件,不呈现任何HTML。我建议战斧的
<t:dataList>
。<t:dataList value="#{bean.imagePaths}" var="imagePath"> <img src="#{imagePath}" /> </t:dataList>