2011-08-16 37 views
1

好,使用的foreach到JSF/XHTML

我阵列的DataTable在那里我必须有一些动态的栏目.... 这样的IM使用的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其不工作...

我已经使用tryed:

的xmlns:C = “http://java.sun.com/jstl/core”

和该另一之一:

的xmlns:C =“http://java.sun.com/jsp/ jstl/core“

但是withotu成功...还尝试使用ui:重复像这样:

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

但也没有奏效。

有人知道可能是什么问题或一些其他方式来迭代列表?

我看到如果我使用a4j:重复INTO列,它会识别a4j:repeat内的列。否则,如果删除外A4J柱:重复它不工作...输出文本成分(value="#{query.presencas.size()}")的

<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> 
+0

为什么你指定rich:column的标签属性?只需拖放extendedDataTable即可。 – Andrey

+0

我假设你正在使用RichFaces 4.0?为此,RichFaces 3.3有一个''。它在RF 4.0中确实不再可用,但它计划用于RF 4.1。所以,我建议:敬请期待... – BalusC

+0

已经尝试使用rich:columns,但没有成功...使用richface 3.2。并改为3.3。测试富有:列...但也“工作”在3.2。 – Igor

回答

0

值为ON显示响应阶段进行评价。 在构建树上评估forEach标记处理程序(items="${query.presencas}")的值。 您在EL中使用不同的符号来区分($和#)。 看起来query.presencas未在构建树上初始化。您可以检查在构建树评估计数:

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

要建立你可以使用c:forEach(为你做的)列的动态数量,items属性将在构建树来评价(因此,例如inscricao变种是不可用当items价值正在评估)。 使用ui:repeat它不起作用,因为RichFaces组件(dataTable,tabPanel和其他)不处理它。

+0

嗯,当我把c:set和h:outputText按照你说的进入c:forEach进入列时,它显示数字“4”......所以它看起来像他已经初始化了.. – Igor

+0

使用c:forEach只有在rich:dataTable中使用ui:repeat或a4j:repeat才能正确使用动态列的正确方法。使用c:forEach方法,然后调试您的代码。例如,检查树是如何构建的。调试ForEachHandler类,看看如何评估项目等(查找以下行:srcVE = this.items.getValueExpression(ctx,Object.class); src = srcVE.getValue(ctx);) – Andrey