ui:repeat and h:panelGrid

14

当使用类似以下的内容时:

<h:panelGrid columns="1">
    <ui:repeat var="o" value="#{mybean.list}">
        <h:outputText value="#{o.text}"/>
    </ui:repeat>
</h:panelGrid>

假设我有10个列表条目,但我只获得1行,例如:只有一个带有1个td的tr,而当我使用c:forEach时,我会得到10个(但实际上c:forEach很烂,在ajax方面会搞砸一切)。

我使用的是Mojarra 1.2 - 这是一个典型的Mojarra bug吗,在MyFaces实现中不存在?在Mojarra 2.x版本中它会消失吗?

1个回答

34
输出结果完全符合预期和规定。 <ui:repeat> 是一个渲染时标记,而不是像 <c:forEach> 一样的视图构建时标记。构建视图后,<h:panelGrid> 最终只有1个子组件(<ui:repeat> 本身),而不像 <c:forEach>一样有 n 个 <h:outputText> 组件。
您需要使用 <h:dataTable>。它专门设计用于此目的。
<h:dataTable var="o" value="#{mybean.list}">
    <h:column>
        <h:outputText value="#{o.text}"/>
    </h:column>
</h:dataTable>

另请参阅:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接