2011-08-16 72 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