我的数据结构如下:
ObjectA包含字符串varA,varB和24个ObjectB的List。
ObjectB包含字符串varC,varD,varE。
我现在有一个ObjectAs列表。
我正在尝试使用Primefaces数据表来获得这样的输出(在表格中)。 (对于每个ObjectA)
我如何实现这一目标?在下面的屏幕截图中,第一列是行索引,第二列是ObjectA的varA,第三列是ObjectA的varB。标题1到24的列是来自24个ObjectB中的每一个的唯一varC的值。在第二行中,标题为1到24的列是来自24个ObjectB中的每一个的ONLY varD的值。在第三行中,标题为1到24的列是来自24个ObjectB中的每一个的ONLY varE的值。 三行完成后,现在我接下一个objectA2并重复该过程。我能够使用c:forEach标签在jsp中执行此操作。但是,我无法使用JSF完成此操作。
我甚至在普通的HTML表格中尝试使用ui:repeat但是如果ObjectA ui中有两个ObjectB ui:重复:重复,只有一个ui:重复正在运行而另一个正在显示空值。
<ui:repeat var="upto" value="#{getClearedTransactionsBean.clearedList}" varStatus="rowCounter">
<tr>
<td rowspan="3">#{rowCounter.index+1}</td>
<td><h:outputText value="#{upto.sink}"/></td>
<td>Cleared MW</td>
<ui:repeat value="#{upto.hourlyClearedList}" var="hourly">
<td><h:outputText value="#{hourly.clearedMW}"/></td>
</ui:repeat>
</tr>
<tr>
<td><h:outputText value="#{upto.sourceLocationLabel}"/></td>
<td>Source LMP</td>
<ui:repeat items="#{upto.hourlyClearedList}" var="hourly">
<td><h:outputText value="#{hourly.sourceLMP}"/></td>
</ui:repeat>
</tr>
<tr>
<td></td>
<td>Sink LMP</td>
<ui:repeat items="#{upto.hourlyClearedList}" var="hourly">
<td><h:outputText value="#{hourly.sinkLMP}"/></td>
</ui:repeat>
</tr>
<tr class="blankrow">
<td colspan="27"></td>
</tr>
</ui:repeat>
</table>
上面的截图是我在jsp中成功完成的截图。但是,我需要在JSF 2中执行此操作。谢谢!
答案 0 :(得分:0)
尝试使用动态列。准备行的模型,可以是HashMap中列数据的对象。
http://www.primefaces.org/showcase/ui/data/datatable/columns.xhtml