2014-07-20 7 views
-1

Я хочу обновить второй SelectOneMenu при выборе любого пункта первого SelectOnMenu.So есть мои два 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 event listner для обновления второго 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 для получения текущего выбранного значения. И не забывайте предоставлять методы get/set для selectedTableName.

+0

bu как я могу дать результат nameTable второму методу getFkName()? –