rich 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变量进行另一次迭代。我为表使用的集合都来自类型ArrayList(长)。非常感谢您的帮助。

我认为<ui:repeat>不工作,因为<rich:column>不是ui:repeat设计用来处理的(例如<li>或类似的东西),你应该使用的<a4j:repeat>也不会在那里工作(这与表的构建方式有关)。

<c:forEach>将工作,与一个小hack:

<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

相关内容

  • 没有找到相关文章

最新更新