在 jsf/xhtml 中使用 foreach

发布于 2024-11-30 04:18:52 字数 1997 浏览 0 评论 0原文

好吧,

我排列了一个数据表,其中必须有一些动态列...... 所以我使用 dataTable... 就像上面的代码:

<rich:dataTable value="#{query.dataModel}" var="inscricao">
            <rich:column label="My List">
                <f:facet name="header">
                    <h:outputText value="My List" />
                </f:facet>
                <h:outputText value="#{query.presencas.size()}" />
            </rich:column>

                        <c:forEach var="presenca" items="${query.presencas}">
                            <rich:column label="Presença">
                <f:facet name="header">
                        <h:outputText value="Presença" />
                </f:facet>
                <h:outputText value="testing" />
                </rich:column>
                        </c:forEach>
</rich:dataTable>

嗯,我的问题是我的 foreach 不起作用。 “我的列表”列正确显示了我在列表中的元素数量...但是当我尝试将其迭代到 c:forEach 时它不起作用...

我已经尝试过使用:

xmlns:c="http: //java.sun.com/jstl/core"

和另一个:

xmlns:c="http://java.sun.com/jsp/jstl/core"

但没有成功...还尝试使用 ui:repeat像这样:

<ui:repeat value="#{query.presencas}" var="presenca">
    <f:facet name="header">
        <h:outputText value="#{presenca.id}" />
    </f:facet>
</ui:repeat>

但也没有奏效。

有人知道可能是什么问题或有其他迭代列表的方法吗?

我发现如果我使用 a4j:repeat INTO 列,它会识别 a4j:repeat 中的我的列。否则,如果我删除 a4j 之外的列:重复它不起作用......

<rich:column label="Presenças" title="teste"  >
    <a4j:repeat value="#{query.presencas}" var="presenca">
         <rich:column label="Presenças" title="teste"  >
        <f:facet name="header">
            <h:outputText value="Presença" />
        </f:facet>
        <h:selectBooleanCheckbox value="#{inscricao.credenciamento}" />
         </rich:column>
    </a4j:repeat>
</rich:column>

Well,

I array a dataTable where i must have some dynamic columns....
So im using dataTable... Like the code above:

<rich:dataTable value="#{query.dataModel}" var="inscricao">
            <rich:column label="My List">
                <f:facet name="header">
                    <h:outputText value="My List" />
                </f:facet>
                <h:outputText value="#{query.presencas.size()}" />
            </rich:column>

                        <c:forEach var="presenca" items="${query.presencas}">
                            <rich:column label="Presença">
                <f:facet name="header">
                        <h:outputText value="Presença" />
                </f:facet>
                <h:outputText value="testing" />
                </rich:column>
                        </c:forEach>
</rich:dataTable>

Well, my problem is that my foreach is not working. The column "My List" shows the number of element i have in the list correctly... But when i try iterating it into c:forEach its not working...

I've already tryed using:

xmlns:c="http://java.sun.com/jstl/core"

and this other one:

xmlns:c="http://java.sun.com/jsp/jstl/core"

But withotu success... Also tryed using ui:repeat like this:

<ui:repeat value="#{query.presencas}" var="presenca">
    <f:facet name="header">
        <h:outputText value="#{presenca.id}" />
    </f:facet>
</ui:repeat>

But also not worked.

Someone know what can be the problem or some another way to iterate a list?

I saw that if i use an a4j:repeat INTO a column, it recognize my column inside the a4j:repeat. Otherwise, if i remove the column outside a4j:repeat it doesnt work...

<rich:column label="Presenças" title="teste"  >
    <a4j:repeat value="#{query.presencas}" var="presenca">
         <rich:column label="Presenças" title="teste"  >
        <f:facet name="header">
            <h:outputText value="Presença" />
        </f:facet>
        <h:selectBooleanCheckbox value="#{inscricao.credenciamento}" />
         </rich:column>
    </a4j:repeat>
</rich:column>

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

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

发布评论

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

评论(1

一瞬间的火花 2024-12-07 04:18:52

输出文本组件的值 (value="#{query.presencas.size()}") 在渲染响应阶段进行评估。
forEach 标记处理程序 (items="${query.presencas}") 的值在构建树上进行评估。
您在 EL 中使用不同的符号来区分($ 和 #)。
似乎 query.presencas 未在构建树上初始化。您可以检查构建树上的评估计数:

<c:set var="count" value="${query.presencas.size()}"/>
<h:outputText value="#{count}"/>

要构建动态列数,您可以使用 c:forEach (就像您所做的那样),将在构建树上评估 items 属性(例如,当评估 items 值时,inscricao var 不可用)。
使用 ui:repeat 它将不起作用,因为 RichFaces 组件(dataTable、tabPanel 等)无法处理该问题。

Value of output text component (value="#{query.presencas.size()}") is evaluated on render response phase.
Value of forEach tag handler (items="${query.presencas}") is evaluated on build tree.
You are using different symbols in EL to differentiate that ($ and #).
It seems that query.presencas is not initialized on build tree. You can check that evaluating count on build tree:

<c:set var="count" value="${query.presencas.size()}"/>
<h:outputText value="#{count}"/>

To build dynamic number of columns you can use c:forEach (as you do), items attribute will be evaluated on build tree (so for example inscricao var is not available when items value is being evaluated).
Using ui:repeat it will not work since RichFaces components (dataTable, tabPanel and others) does not handle that.

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