0

次のコンポーネントがあります。

                     <h:selectOneMenu id="company" 
                                 value="#{companyController.selected.companyId}" 
                                 onchange="?????????">

                    <f:selectItems value="#{companyController.itemsAvailableSelectOne}"/>
                </h:selectOneMenu>

                <h:outputLabel value="some value" for="locations" />

                <h:selectManyListbox id="locations" >
                    <f:selectItems value="#{companyController.selected.locationCollection}"/>
                </h:selectManyListbox>

SelectOneMenu で会社が選択されるたびに、SelectManyListBox の項目を更新する必要があります。

私を助けてください

どうもありがとうございました!

4

1 に答える 1

1

あなたは使いたくなるでしょう<f:ajax>。おそらく次のようなものです:

            <h:selectOneMenu id="company" 
                             value="#{companyController.selected.companyId}">
                <f:ajax event="valueChange" execute="@this" render="@this locations" />
                <f:selectItems value="#{companyController.itemsAvailableSelectOne}"/>
            </h:selectOneMenu>

            <h:outputLabel value="some value" for="locations" />

            <h:selectManyListbox id="locations" >
                <f:selectItems value="#{companyController.selected.locationCollection}"/>
            </h:selectManyListbox>

次に、selectedオブジェクトsetCompanyIdメソッドを変更して、以下を更新できlocationCollectionます。

public void setCompanyId( long companyId ) {
    this.companyId = companyId;
    // now update your location collection
    this.locationCollection = locationCollectionMap.get( companyId );
}
于 2013-04-28T01:20:27.923 に答える