9

我想使用 primefaces展示中的示例对 selectOneMenu 中的 selectItems 进行分组:

<h:outputText value="Grouping: " />  
    <p:selectOneMenu value="#{formBean.car}">  
        <f:selectItem itemLabel="Select One" itemValue="" />  
        <f:selectItems value="#{formBean.cars}" />  
    </p:selectOneMenu> 

我的问题是,没有 bean 的实现。现在我不知道,如何在getCars() 方法中实现selectItems 的分组。我找不到任何其他例子。

4

2 回答 2

18

展示的源代码#{formBean}在此处获得。这是相关性的摘录:

private List<SelectItem> cars;

public FormBean() {
    SelectItemGroup g1 = new SelectItemGroup("German Cars");
    g1.setSelectItems(new SelectItem[] {new SelectItem("BMW", "BMW"), new SelectItem("Mercedes", "Mercedes"), new SelectItem("Volkswagen", "Volkswagen")});

    SelectItemGroup g2 = new SelectItemGroup("American Cars");
    g2.setSelectItems(new SelectItem[] {new SelectItem("Chrysler", "Chrysler"), new SelectItem("GM", "GM"), new SelectItem("Ford", "Ford")});

    cars = new ArrayList<SelectItem>();
    cars.add(g1);
    cars.add(g2);
}

因此,您缺少的关键是SelectItemGroup.

也可以看看:

于 2013-01-31T14:15:23.040 回答
2

在此示例getCars()中返回javax.faces.model.SelectItem对象列表。这个类有一个子类,命名为SelectItemGroup代表selectOneMenu. 此对象的值字段被忽略,仅使用标签。因此,在您的列表中,您可以混合SelectItemSelectItemGroup对象来分组组织您的列表。请注意,SelectItem属于组的对象在对象中作为数组存在SelectItemGroup。您可以通过构造函数或 setter ( setSelectItems()) 设置该数组。

于 2013-01-31T13:28:00.770 回答