How to group selectItems in selectOneMenu

12,746

Solution 1

The source code of the showcase's #{formBean} is available here. Here's an extract of relevance:

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);
}

Thus, your missing key is SelectItemGroup.

See also:

Solution 2

In this example getCars() returns a list of javax.faces.model.SelectItem objects. There is one subclass of this class, named SelectItemGroup which represent a grup in selectOneMenu. Value field of this object is ignored and just label is used. So in your list you can mix SelectItem and SelectItemGroup objects to organize your list in groups. Note, that SelectItem objects which are part of group are present as array in SelectItemGroup object. You can set that array through constructor or setter (setSelectItems()).

Share:
12,746
Karina
Author by

Karina

Updated on July 17, 2022

Comments

  • Karina
    Karina almost 2 years

    I would like to use the example from the primefaces showcase to group selectItems in selectOneMenu:

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

    My problem is, that there is no implementation of the bean. Now I don't know, how to implement the grouping of the selectItems inside the method getCars(). And I can't find any other example.

  • Karina
    Karina over 11 years
    Thanks. I didn't know SelectItemGroup.
  • Rasshu
    Rasshu over 9 years
    Can a SelectItemGroup have other SelectItemGroups within?