gpt4 book ai didi

java - rich dataTable 不能对嵌套循环使用迭代变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:32 29 4
gpt4 key购买 nike

我正在构建一个包含动态列数的丰富数据表。在我看来,这不是什么大事,但我想从几个小时开始就得到答案。问题是当我想将数据表中的迭代变量用于嵌套循环时。在嵌套循环中,我尝试为每一行创建相同的动态列数。当我显示一些代码时,它可能会变得更加清晰:

<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>

问题出在以下 block 中:

<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 变量用于另一次迭代。我用于表的集合都来自 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 .

关于java - rich dataTable 不能对嵌套循环使用迭代变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16394795/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com