在 jsf/xhtml 中使用 foreach
好吧,
我排列了一个数据表,其中必须有一些动态列...... 所以我使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
输出文本组件的值 (
value="#{query.presencas.size()}"
) 在渲染响应阶段进行评估。forEach 标记处理程序 (
items="${query.presencas}"
) 的值在构建树上进行评估。您在 EL 中使用不同的符号来区分($ 和 #)。
似乎
query.presencas
未在构建树上初始化。您可以检查构建树上的评估计数:要构建动态列数,您可以使用
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:To build dynamic number of columns you can use
c:forEach
(as you do),items
attribute will be evaluated on build tree (so for exampleinscricao
var is not available whenitems
value is being evaluated).Using
ui:repeat
it will not work since RichFaces components (dataTable, tabPanel and others) does not handle that.