使用小脸环回路

问题描述:

我正在开发使用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

你确定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。此外,您似乎混合延期和立即语法(#{}${})没有明显的原因。