迭代 p:dataTable 中的嵌套对象列表

问题描述 投票:0回答:1
jsf datatable primefaces nested-lists
1个回答
1
投票

您可以嵌套另一个迭代组件,就像在普通 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()}" ...>
© www.soinside.com 2019 - 2024. All rights reserved.