2014-02-07 32 views
0

更新了代碼,但不是真正的改變。ajax調用使字段爲空

當我設置玩家我想更新其他選擇一個菜單與當前球員俱樂部。但菜單將變得完全空白。該bean將始終返回正確的值。

從頁面導航並返回將顯示正確的值。在第一次導航回來之後,它將始終按照預期工作。

<p:selectOneMenu value="#{player}" 
       converter="playerConverter" id="playerList"> 
      <f:selectItem itemLabel="---" noSelectionOption="true" /> 
      <f:selectItems value="#{servicePlayer.allPlayers}" 
      var="n" 
      itemValue="#{n}" 
      itemLabel="#{n.combinedName}" 
      itemLabelEscaped="true"/> 
       <p:ajax event="change" execute="@this" update="ClubMenu" actionListener="#{serviceHCP.getClubs(player)}"/> 
       <!-- p:ajax event="change" execute="@this" render="ClubMenu" /--> 
      </p:selectOneMenu> 

       <h:outputText value="Klubb"></h:outputText> 
       <p:selectOneMenu id="ClubMenu" value="#{serviceHCP.myClubList}" rendered="#{not empty serviceHCP.myClubList}"> 
        <f:selectItems value="#{serviceHCP.getClubs(player)}" /> 
       </p:selectOneMenu> 
       <h:outputText value="Serietyp"></h:outputText> 

支持bean功能

public void getClubs(Player player) { 

     if (factory == null) { 
      factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
     } 

     EntityManager em = factory.createEntityManager(); 

     //If we have a player just return that players club 
     Query q; 
     if (player == null || player.getClub() == null) 
      q = em.createQuery("select t from Club t"); 
     else { 
      q = em.createQuery("select t from Club t where t.id = :playerID"); 
      q.setParameter("playerID", player.getClub().getId()); 
     } 

     myClubList = q.getResultList(); 
     for (Club aClub : myClubList) { 
      System.out.println("Club list info: " + aClub); 
     } 
     System.out.println("Club Size: " + myClubList.size()); 

     em.close(); 
    } 
+0

這似乎是第二選擇一個得到呈現有任何信息之前。 – user2130951

回答

0

您還需要處理playerList領域:

<p:ajax process="@this" update="ClubMenu" /> 
+0

它並不急於。看起來getclubs()不會被調用。 – user2130951