2013-12-09 54 views
0

我正在使用selectmanymenu標記與Ajax,但列表沒有被調用。沒有event =「change」的情況下,相同的代碼已經用於selectonemenu。請建議我,如果我做錯了ajax與selectmanymenu不工作

這裏是代碼

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:h="http://java.sun.com/jsf/html"> 

<h:head> 
</h:head> 

    <h:body> 
    <h:form> 
     <h:selectManyMenu id="dropDownValue" 
      value="#{loginBean.dropDownValue}" style="height:100px; width:100px;"> 
      <f:selectItem itemValue="****select***" /> 
      <f:selectItems value="#{loginBean.testDropDown}" /> 
      <f:ajax render="testDropDownTwo" 
       listener="#{loginBean.changeDropDownOne}" event="change" /> 
     </h:selectManyMenu> 

     <h:selectManyMenu id="testDropDownTwo" 
      value="#{loginBean.dropDownTwoValue}" 
      style="height:100px; width:100px;"> 
      <f:selectItem itemValue="****select***" /> 
      <f:selectItems value="#{loginBean.testDropDownTwo}" /> 
     </h:selectManyMenu> 
    </h:form> 

    </h:body> 
</html> 

回答

0

您的代碼對我來說是沒有問題的,你應該提供支持bean。

不過,我想你的代碼,你可以檢查此:

(頁正好與你相同)

輔助Bean:

private List<String> dropDownValue = new ArrayList<>(); 
private List<String> dropDownTwoValue = new ArrayList<>(); 
private List<String> testDropDown = new ArrayList<>(); 
private List<String> testDropDownTwo = new ArrayList<>(); 

@PostConstruct 
public void init() { 
    testDropDown.add("a"); 
    testDropDown.add("b"); 
    testDropDown.add("c"); 
} 

public void changeDropDownOne() { 
    testDropDownTwo.clear(); 
    for(String str:dropDownValue) 
     for(int i=0;i<3;i++) 
    testDropDownTwo.add(str+i); 
} 
//simply getters and setters below