使用小脸环回路
问题描述:
我正在开发使用jsf2
和facelets
的应用程序。在我的一个观点中,我尝试显示数据库中的数据,并使用两个嵌套循环。第二个循环使用一个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>
第一个循环工程,但不能同时使用。
答
你确定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
。此外,您似乎混合延期和立即语法(#{}
和${}
)没有明显的原因。
是不是'nestedtVect'是一个错字?你有没有发布你的确切代码? – mrembisz 2011-12-28 15:51:53