2011-12-28 40 views
0

我正在開發使用jsf2facelets的應用程序。在我的一個觀點中,我嘗試顯示數據庫中的數據,並使用兩個嵌套循環。第二個循環使用一個var,它是爲第一個循環聲明的var的一個屬性。使用小臉環迴路

但它不工作。

這裏是我的代碼的相關部分:

<ui:repeat value="#{MyBean.Vect}" var="item"> 
    <h:outputText value="${item.attr}" /> <br /> 
    <ui:repeat value="#{item.nestedtVect}" var="product" > 
     <h:outputText value="${product.name}" /> <br /> 
    </ui:repeat> 
</ui:repeat> 

第一個循環工程,但不能同時使用。

+1

是不是'nestedtVect'是一個錯字?你有沒有發佈你的確切代碼? – mrembisz 2011-12-28 15:51:53

回答

4

你確定item.nestedtVect不爲空,實際上有物品嗎?你的Facelet乍一看似乎是正確的。

例如考慮這個小例子:

支持bean:

@ManagedBean 
public class NestedLoopBacking { 

    String[][] items = { {"A", "B"}, {"1", "2", "3"} }; 

    public String[][] getItems() { 
     return items; 
    } 
} 

的facelet:

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 

    <h:body> 

     <ui:repeat value="#{nestedLoopBacking.items}" var="item"> 
      <ui:repeat value="#{item}" var="content"> 
       <h:outputText value="${content}" /> 
       <br /> 
      </ui:repeat> 
     </ui:repeat> 

    </h:body> 
</html> 

這只是工程™。您可能要放在一個明確的測試,看看你的嵌套集合爲空或不:

<h:outputText value="Collection empty" rendered="#{empty item.nestedtVect}"/> 
<h:outputText value="Collection not empty" rendered="#{!empty item.nestedtVect}"/> 

附:

與這個問題無關,但你可能想看看你的命名。 MyBean.Vect不是一個非常好的名字,attr也不是item.attr。此外,您似乎混合延期和立即語法(#{}${})沒有明顯的原因。