5

タイプとコードの2つのドロップダウンがあります。値 = A、B、または C の場合、Type ドロップダウンに応じて Code ドロップダウンの値を変更する必要があります。List を理解して処理できるように、A、B、または C の値をリスナーに渡すにはどうすればよいですか?

     <h:outputLabel value="Type" for="idType" />
     <h:selectOneMenu id="idType" value="#{myController.type}">
         <f:selectItem itemLabel="AAA" itemValue="AAA" />
         <f:selectItem itemLabel="BBB" itemValue="BBB" />
         <f:selectItem itemLabel="CCC" itemValue="CCC" />
         <f:ajax event="valueChange" listener="#{myController.changeCodeList}" render="idCode" execute="@this" />
     </h:selectOneMenu>
     <h:outputLabel value="Code" for="idCode" />
     <h:selectOneMenu id="idCode" value="#{myController.code}" >
         <f:selectItem itemLabel="Select ..." noSelectionOption="true" />
         <f:selectItems value="#{myController.codeList}" />
     </h:selectOneMenu>
4

2 に答える 2

7

event="valueChange"から を削除する<f:ajaxか、event="change"

すでに存在するため、値を渡す必要はありません(changeCodeListメソッド内)

public void changeCodeList(AjaxBehaviorEvent ev) {
    System.out.println(type); //here is your value
    //now repopulate your list based on the value
    codeList = someMethod(type);
}
于 2012-11-06T06:41:13.537 に答える
0

使用できます

<f:setPropertyActionListener value="You want to pass" target="Backing bean property that you want to set" /> 

n 別のオプションは

<a4j:support ajaxSingle="true" reRender="codeCombo"
                            event="onchange"></a4j:support>

したがって、 a4j:support を使用すると、タイプの選択でコードを再レンダリングできます

于 2012-11-06T05:38:18.873 に答える