【问题标题】:How to group selectItems in selectOneMenu如何在 selectOneMenu 中对 selectItems 进行分组
【发布时间】:2013-01-15 14:41:44
【问题描述】:

我想使用 primefaces showcase 中的示例将 selectItems 分组到 selectOneMenu:

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

【问题讨论】:

    标签: jsf-2 primefaces selectonemenu


    【解决方案1】:

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

    【讨论】:

    • 谢谢。我不知道 SelectItemGroup。
    【解决方案2】:

    展示柜#{formBean} 的源代码在here 可用。以下是相关性摘录:

    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 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    相关资源
    最近更新 更多