您可以嵌套另一个迭代组件,就像在普通 Java 中嵌套
for
循环一样。
这是嵌套另一个
<p:dataTable>
的示例,假设 Wash
具有属性 foo
:
<p:dataTable value="#{bean.cars}" var="car">
<p:column headerText="Washes">
<p:dataTable value="#{car.washes}" var="wash">
<p:column headerText="Foo">#{wash.foo}</p:column>
</p:dataTable>
</p:column>
</p:dataTable>
如果您想要无标记/无样式迭代,请使用
<ui:repeat>
或也许 <h:dataTable>
:
<p:dataTable value="#{bean.cars}" var="car">
<p:column headerText="Washes">
<ui:repeat value="#{car.washes}" var="wash">
#{wash.foo}
</ui:repeat>
</p:column>
</p:dataTable>
顺便说一下,使用复数作为类名是很奇怪的,而你可以在一个
List
中使用多个类名。您可能想将 Washes
重命名为 Wash
。上面的代码片段已经考虑到了这一点。您会发现,通过这种方式,代码变得更加自我记录。
更新;
<ui:repeat>
和 <h:dataTable>
组件不支持迭代 Set<E>
。该支持将在未来的 JSF 2.3 版本中提供。如果不能用 Set<E>
替换 List<E>
,那么只需从中获取一个数组,如下所示:
<ui:repeat value="#{car.washes.toArray()}" ...>