ui:repeat 和 h:panelGrid

发布于 2024-12-27 21:04:03 字数 418 浏览 1 评论 0原文

当使用类似

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

with 的东西时,比如说 10 个列表条目,我只得到 1 行,例如:一个 tr 和 1 个 td ,而当我使用 c:forEach 时,我得到 10 (但 c:forEach 实际上是邪恶的,它用 ajax 搞乱了一切)

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

When using something like

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

with lets say 10 list entries I only get 1 row e.g.: one tr with 1 td whereas when I use c:forEach i get 10 (but c:forEach is in fact evil, it messes up everything with ajax)

I use mojarra 1.2 - is this a typical Mojarra bug which does not exist in the MyFaces implementation? Will it disappear in 2.x of the Mojarra releases?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ㄟ。诗瑗 2025-01-03 21:04:03

输出完全符合预期和指定。 是渲染时间标记,而不是像 那样的视图构建时间标记。构建视图后, 最终得到 1 个子组件( 本身),而不是 n 组件与 类似。

您需要一个 来代替。它就是为了这个目的而设计的。

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

另请参阅:

The output is fully as expected and specified. The <ui:repeat> is a render time tag, not a view build time tag like <c:forEach>. After building the view, <h:panelGrid> ends up with 1 child component (the <ui:repeat> itself), not with n <h:outputText> components like as with <c:forEach>.

You need a <h:dataTable> instead. It's designed for exactly this purpose.

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

See also:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文