当前位置: 首页 > 面试题库 >

丰富的dataTable不能将迭代变量用于嵌套循环

芮意
2023-03-14
问题内容

我正在建立具有动态列数的丰富数据表。在我看来,这不是一件大事,但是我一直在努力寻求答案。问题是当我想将数据表中的迭代变量用于嵌套循环时。在嵌套循环中,我尝试为每一行创建相同数量的动态列。当我显示一些代码时,它可能会变得更加清晰:

<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(long)。非常感谢您的帮助。


问题答案:

我认为<ui:repeat><rich:column>是行不通的,因为不是ui:repeat旨在处理的内容(例如a
<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



 类似资料:
  • 我有以下python生成器: 而且我想在Java中实现一个迭代器,它的行为有点像以前的生成器。我试图使用两个内部迭代器,但它不起作用。想法?

  • 我发现了这个关于使用限定符进行可迭代到不可迭代映射的示例: 但是,如果我想从emails集合的第一个元素中提取一个特定的字段,例如,就像我处理code一样? 例如,我希望编写如下的映射:

  • 我有以下片段,我想知道是否可以用Java-Streams/Java8 API替换它,以及如何替换它

  • 假设我有一个包含集合的对象,所述集合上的每个元素都包含一个集合,每个集合都包含一个集合。 我想在最深的对象上迭代,并对其应用相同的代码。 命令式的方法是微不足道的,但有没有一种方法来完成这一切? 我可以看到如何从最深的循环中生成lambda: 但我能做得更多吗?

  • 问题内容: 考虑以下代码: 我有一些要求,例如我想读取/获取所有类型的键和值以进行某些处理,但我无法定义它,因为我将获得动态JSON输入(例如,作为字符串,那么第二级循环将给我索引)数组并处理每个具有key 和的JSON 。 我希望遍历其中包含的每个键/值对,浏览地图的最有效方法是什么? 注意:我是Go-lang的新手,也欢迎您提出问题。 问题答案: 请参阅此博客条目,该条目彻底涵盖了该主题,尤其

  • 要表现色彩里的浓烈、富足感可藉由组合一个有力的色彩和它暗下来的补色。例如,深白兰地酒红色就是在红色中加了黑色,就像产自法国葡萄园里陈年纯美的葡萄酒,象征财富。白兰地酒红色和深森林绿如果和金色一起使用可表现富裕。这些深色、华丽的色彩用在各式各样的织料上,如皮革和波纹皱丝等等,可创造出戏剧性、难以忘怀的效果。这些色彩会给人一种财富和地位的感觉。 补色色彩组合 原色色彩组合 单色色彩组合 49 3 49