java-丰富的dataTable不能将迭代变量用于嵌套循环
作者:互联网
我正在建立具有动态列数的丰富数据表.在我看来,这不是一件大事,但是我一直在努力寻求答案.
问题是当我想将数据表中的迭代变量用于嵌套循环时.在嵌套循环中,我尝试为每一行创建相同数量的动态列.
当我显示一些代码时,它可能会变得更加清晰:
<rich:dataTable styleClass="waiDataTable" width="700"
rowClasses="odd,even" value="#{reportingModel.reportingDoiPoolRows}"
var="reportingDoiPoolRow"
rendered="#{not empty reportingModel.reportingDoiPoolRows}">
<!-- Start header of the data-table -->
<f:facet name="header">
<rich:columnGroup>
<rich:column rowspan="2">
<h:outputText value="Pool" />
</rich:column>
<c:forEach items="#{reportingModel.headerList}" var="item">
<rich:column colspan="2">
<h:outputText value="#{item}" />
</rich:column>
</c:forEach>
<rich:column breakRowBefore="true">
<h:outputText value="New" />
</rich:column>
<rich:column>
<h:outputText value="Tot" />
</rich:column>
<c:forEach begin="1" end="#{reportingModel.headerList.size()-1}">
<rich:column>
<h:outputText value="New" />
</rich:column>
<rich:column>
<h:outputText value="Tot" />
</rich:column>
</c:forEach>
</rich:columnGroup>
</f:facet>
<!-- End header of the data-table -->
<!-- Start values of the data-table -->
<rich:column>
<h:outputText value="#{reportingDoiPoolRow.doiPool.name}"></h:outputText>
</rich:column>
<ui:repeat value="#{reportingDoiPoolRow.amountOfDois}" var="amount">
<rich:column style="text-align:right;">
<h:outputText value="#{amount}"/>
</rich:column>
</ui:repeat>
<!-- Start values of the data-table -->
<f:facet name="footer">
<rich:columnGroup>
<rich:column style="text-align:left;">Totals</rich:column>
<rich:column style="text-align:right;">
<h:outputText value="12"></h:outputText>
</rich:column>
<rich:column style="text-align:right;">
<h:outputText value="12"></h:outputText>
</rich:column>
</rich:columnGroup>
</f:facet>
问题在以下块中:
<rich:column>
<h:outputText value="#{reportingDoiPoolRow.doiPool.name}"></h:outputText>
</rich:column>
<ui:repeat value="#{reportingDoiPoolRow.amountOfDois}" var="amount">
<rich:column style="text-align:right;">
<h:outputText value="#{amount}"/>
</rich:column>
</ui:repeat>
名称(reportingDoiPoolRow.doiPool.name)呈现得很好,但是ui:repeat内部的每一列都没有呈现.
看来我不能在另一个迭代中使用reportingDoiPoolRow变量.
我用于表的Collections都来自ArrayList类型(长整数).
非常感谢您的帮助.
解决方法:
我认为< ui:repeat>因为< rich:column>不是ui:repeat旨在处理的内容(例如< li或类似的东西),< a4j:repeat>您应该使用它的方法在那儿也不起作用(这与表的构建方式有关).
< c:forEach>可以工作,但需要一点技巧:
<c:forEach var="index" begin="0" end="#{reportingModel.columns - 1}">
<rich:column style="text-align:right;">
<h:outputText value="#{reportingDoiPoolRow.amountOfDois.get(index)}" />
</rich:column>
</c:forEach>
< c:forEach>无法访问< rich:dataTable>中的属性(嗯,它可以访问rowKeyVar,但始终为1),因此您必须直接向Bean询问列的大小,但要由< c:forEach>将可以访问var.
标签:richfaces,arraylist,jsf,java,richdatatable 来源: https://codeday.me/bug/20191123/2066844.html