我在JSF页面上显示一些数据时遇到了一些问题。它处理我编写的一个比萨sql搜索程序。java程序本身工作正常,但输出有一些问题。
所有披萨都存储在实例的ArrayList中,如List
所有的披萨都存储在数组列表中,如下所示:
List<PizzaObject> results = new ArrayList<PizzaObject>();
PizzaObject类看起来像这样:
public static class PizzaObject {
Pizza pizza;
List<Size> sizeList;
List<Topping> toppingList;
public PizzaObject(Pizza pizza, List<Size> sizeList, List<Topping> toppingList) {
this.pizza = pizza;
this.sizeList = sizeList;
this.toppingList = toppingList;
}
// getter and setter
}
类Pizza, Topping和Size包含属于每个Pizza对象的不同属性。例如,Size类看起来像这样:
public static class Size {
int sizeID;
int diameter;
public Size(int sizeID, int diameter) {
this.sizeID = sizeID;
this.diameter = diameter;
}
// getter and setter
}
在我的JSF输出页面中,我现在想要显示每个披萨及其大小和配料。但是由于它们没有相同的大小,我需要迭代列表sizeList,这就是错误发生的地方。
<ui:repeat var="results" value="#{pizzaSearchBean.results}">
<p>#{results.pizza.name}</p>
<p>sizes: </p>
<h:selectOneRadio id="pizzasize" value="#{pizzaSearchBean.pizzasize}">
<ui:repeat var="sizes" value="#{results.sizeList}">
<f:selectItem id="size" itemLabel="#{sizes.diameter}" itemValue="#{sizes.sizeID}"/>
</ui:repeat>
</h:selectOneRadio>
</ui:repeat>
我不知道为什么没有输出单选框,但我不认为我实现错了。
谢谢你的帮助!
看看[<f:selectitems>][1]
,它的目的是基于一个集合呈现多个组件。例如,您可以将<ui:repeat>
替换为
<f:selectItems value="#{results.sizeList}" var="size"
itemLabel="#{size.diameter}" itemValue="#{size.sizeId}" />