我正在使用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>第一个循环可以工作,但不能同时工作。
发布于 2011-12-28 21:16:48
您确定item.nestedtVect不为null并且确实包含项吗?乍一看,你的面孔似乎是对的。
例如,考虑这个最小的例子:
支持bean:
@ManagedBean
public class NestedLoopBacking {
String[][] items = { {"A", "B"}, {"1", "2", "3"} };
public String[][] getItems() {
return items;
}
}面孔:
<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不是一个好名字,item.attr中的attr也不是。而且,您似乎无缘无故地混合了延迟和立即语法(#{}和${})。
https://stackoverflow.com/questions/8655451
复制相似问题