ui:repeat和h:panelGrid

时间:2012-01-20 17:39:49

标签: jsf facelets mojarra

使用

之类的东西时
<h:panelGrid columns="1">
    <ui:repeat var="o" value="#{mybean.list}">
        <h:outputText value="#{o.text}"/>
    </ui:repeat>
</h:panelGrid>

让我们说10个列表条目我只得到1行例如:一个tr与1 td,而当我使用c:forEach我得到10(但是c:forEach实际上是邪恶的,它用ajax弄乱了所有东西)

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

1 个答案:

答案 0 :(得分:32)

输出完全符合预期和指定。 <ui:repeat>是渲染时标记,而不是<c:forEach>之类的视图构建时标记。构建视图后,<h:panelGrid>最终会有1个子组件(<ui:repeat>本身),而不是 n <h:outputText>组件,就像<c:forEach>一样

您需要<h:dataTable>。它的设计正是为了这个目的。

<h:dataTable var="o" value="#{mybean.list}">
    <h:column>
        <h:outputText value="#{o.text}"/>
    </h:column>
</h:dataTable>

另见: