2014-07-20 73 views
-1

我想,當我選擇第一SelectOnMenu.So的任何項目有我的兩個selectOneMenu用於更新第二selectOneMenu用於:JSF 2 selectOneMenu用於更新其他selectOneMenu用於

 <p:outputLabel value="Table :" /> 
        <p:selectOneMenu id="tbName"> 
              <f:selectItem itemLabel="Select Table" itemValue="" /> 
              <f:selectItems value="#{infoTable.nameTa}" /> 

             </p:selectOneMenu> 
<p:outputLabel value="Foreignenkey :" /> 

       <p:selectOneMenu id="cat"> 
             <f:selectItem itemLabel="Select Column" itemValue="" /> 
             <f:selectItems value="#{infoTable.fkName}" /> 

            </p:selectOneMenu> 

,這是他的Java代碼:

public List<SelectItem> getNameTa() { 
     List<SelectItem> subcat = new ArrayList<SelectItem>(); 
     try { 
      ConnectionBase con = new ConnectionBase(); 
      TableInfo tt = new TableInfo(); 

      List<String> rs = tt.getTable(con, "%"); 
      Iterator i = rs.iterator(); 
      while (i.hasNext()) { 
       subcat.add(new SelectItem(i.next())); 
      } 

     } catch (Exception e) { 
      e.getStackTrace(); 
     } 

     return subcat; 

    } 
public List<SelectItem> getFkName() { 
     List<SelectItem> subcat = new ArrayList<SelectItem>(); 
     // if (catname != null && !catname.equals("")) { 
     try { 
      // Connection con = Database.getConnection(); 
      ConnectionBase con = new ConnectionBase(); 
      TableInfo tt = new TableInfo(); 

      List<String> rs = tt.getNameCtable(con, "%"); 


      Iterator i = rs.iterator(); 
      while (i.hasNext()) { 
       subcat.add(new SelectItem(i.next())); 
      } 

     } catch (Exception ex) { 
     } 
     // } 
     return subcat; 
    } 

因爲我知道我應該做一個eventLestner,但我不知道如何以及何時從第一個selectonemenu獲取表的名稱如何將名稱發送到第二個方法「getFkName」?

+0

你見過我們的[selectonemenu wiki](http://stackoverflow.com/tags/selectonemenu/info)嗎?有一章解釋了這一點。 – perissf

回答

0

將選定值存儲在bean實例變量中,並使用ajax事件列表程序更新第二個p:selectOneMenu。

<p:selectOneMenu id="tbName" value="#{infoTable.selectedTableName}"> 
    <p:ajax event="onchange" update="cat"> 
    <f:selectItem itemLabel="Select Table" itemValue="" /> 
    <f:selectItems value="#{infoTable.nameTa}" /> 
</p:selectOneMenu> 

在您的getFkName()中,您可以使用selectedTableName變量來獲取當前選定的值。 並且不要忘記爲selectedTableName提供get/set方法。

+0

ü如何我可以給第二個方法getFkName()nameTable的結果? –