Java 在jsf/xhtml中使用foreach
那么 我数组一个数据表,其中必须有一些动态列。。。。 所以我用的是数据表。。。与上面的代码类似:Java 在jsf/xhtml中使用foreach,java,jsf,xhtml,jstl,seam,Java,Jsf,Xhtml,Jstl,Seam,那么 我数组一个数据表,其中必须有一些动态列。。。。 所以我用的是数据表。。。与上面的代码类似: <rich:dataTable value="#{query.dataModel}" var="inscricao"> <rich:column label="My List"> <f:facet name="header"> <h:outputText valu
<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>
嗯,我的问题是我的车坏了。“我的列表”列正确显示了列表中的元素数。。。但当我尝试将其迭代到c:forEach时,它不起作用
我已经尝试使用:
xmlns:c=”http://java.sun.com/jstl/core"
还有另一个:
xmlns:c=”http://java.sun.com/jsp/jstl/core"
但是没有成功。。。还尝试使用ui:重复如下操作:
<ui:repeat value="#{query.presencas}" var="presenca">
<f:facet name="header">
<h:outputText value="#{presenca.id}" />
</f:facet>
</ui:repeat>
但也不管用
有人知道问题出在哪里,或者知道迭代列表的其他方法吗
我看到,如果我在一列中使用a4j:repeat,它会在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>
输出文本组件的值(
值=“#{query.presencas.size()}”
)在渲染响应阶段计算。
forEach标记处理程序(items=“${query.presencas}”
)的值在生成树上计算。
您在EL中使用了不同的符号来区分($和#)。
似乎query.presencas
未在构建树上初始化。您可以检查生成树上的评估计数:
<c:set var="count" value="${query.presencas.size()}"/>
<h:outputText value="#{count}"/>
要构建动态的列数,您可以使用c:forEach
(正如您所做的那样),项
属性将在构建树上进行求值(例如,项
值求值时,inscricao
变量不可用)。
使用
ui:repeat
将不起作用,因为RichFaces组件(dataTable、tabPanel和其他)无法处理该问题。输出文本组件的值(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
(正如您所做的那样),项
属性将在构建树上进行求值(例如,项
值求值时,inscricao
变量不可用)。
使用
ui:repeat
将不起作用,因为RichFaces组件(dataTable、tabPanel和其他)无法处理该问题。好吧,当我将c:set和h:outputText(正如您在c:forEach中所说)放入列中时,它会显示数字“4”。。。所以看起来他已经初始化了..使用c:forEach是在rich:dataTable中拥有动态列的唯一正确方法,使用ui:repeat或a4j:repeat将无法正常工作。使用c:forEach方法,然后调试代码。例如,检查树是如何构建的。调试ForEachHandler类并查看如何计算项,等等(查找以下行:srcVE=this.items.getValueExpression(ctx,Object.class);src=srcVE.getValue(ctx);)好的,当我将c:set和h:outputText如您所说放入c:forEach列中时,它显示了数字“4”。。。所以看起来他已经初始化了..使用c:forEach是在rich:dataTable中拥有动态列的唯一正确方法,使用ui:repeat或a4j:repeat将无法正常工作。使用c:forEach方法,然后调试代码。例如,检查树是如何构建的。调试ForEachHandler类并查看如何计算项,等等(查找以下行:srcVE=this.items.getValueExpression(ctx,Object.class);src=srcVE.getValue(ctx);)为什么要为rich:column指定标签属性?它仅用于拖放extendedDataTable。我假设您使用的是RichFaces 4.0?RichFaces 3.3有一个
就是为了这个目的。它在RF 4.0中确实不再可用,但计划在RF 4.1中使用。所以,我建议:继续关注……已经尝试使用rich:columns,但没有成功。。。使用richface 3.2。并改为3.3。要测试rich:列。。。但在3.2中也“起作用”。为什么要为rich:column指定标签属性?它仅用于拖放extendedDataTable。我假设您使用的是RichFaces 4.0?RichFaces 3.3有一个
就是为了这个目的。它在RF 4.0中确实不再可用,但计划在RF 4.1中使用。所以,我建议:继续关注……已经尝试使用rich:columns,但没有成功。。。使用richface 3.2。并改为3.3。要测试rich:列。。。但在3.2也“起作用”。