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、のグループを表すという名前のサブクラスが1つありselectOneMenuます。このオブジェクトの値フィールドは無視され、ラベルのみが使用されます。したがって、リスト内SelectItemSelectItemGroupオブジェクトを組み合わせて、リストをグループに編成できます。SelectItemグループの一部であるオブジェクトは、オブジェクト内の配列として存在することに注意してくださいSelectItemGroup。その配列は、コンストラクターまたはセッター(setSelectItems())を使用して設定できます。

于 2013-01-31T13:28:00.770 に答える