2012-11-06 34 views
5

我有2個下拉菜單:Type &代碼。如果值= A或B或C,我希望代碼下拉菜單根據類型下拉菜單更改值。如何將A或B或C的值傳遞給監聽程序,以便它可以理解和處理我的列表?如何在selectOneMenu中將值傳遞給監聽器

 <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> 
+1

Ajax4jsf的是RichFaces的與''庫的標籤子文庫。你似乎沒有在任何地方使用它。那麼請不要在你的問題上使用'[ajax4jsf]'標籤。 – BalusC

回答

6

刪除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); 
} 
+0

太棒了。非常感謝你 – Peter

+0

不客氣。 – Daniel

0

您可以使用

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

ñ另一個選擇是

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

所以使用A4J:支持可以在類型選擇重新解析代碼

+2

感謝您的回覆,我會檢查它。也許richface4不支持a4j:支持,我看不到那個元素 – Peter

相關問題