JSF2 Primefaces数据表子表或ui:重复表

时间:2016-05-20 03:30:18

标签: jsf primefaces datatable html-table jsf-2.2

我的数据结构如下:

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完成此操作。

enter image description here

我甚至在普通的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中执行此操作。谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用动态列。准备行的模型,可以是HashMap中列数据的对象。

http://www.primefaces.org/showcase/ui/data/datatable/columns.xhtml