如何在selectOneMenu中对selectItems进行分组选择

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的分组。我找不到其他的示例。

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

另请参阅:


一个 SelectItemGroup 可以包含其他的 SelectItemGroup 吗? - Rasshu

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

谢谢。我不知道SelectItemGroup。 - Karina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接