【问题标题】:ajax call makes field emptyajax 调用使字段为空
【发布时间】:2014-02-07 09:06:03
【问题描述】:

更新了代码,但没有真正改变。

当我设置球员时,我想用当前球员俱乐部更新另一个选择一个菜单。但菜单将变得完全空。 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();
    }

【问题讨论】:

  • 似乎第二个选择一个在它有任何信息之前就被渲染了。

标签: ajax jsf primefaces


【解决方案1】:

你还需要处理 playerList 字段:

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

【讨论】:

  • 没用。似乎 getclubs() 没有被调用。
猜你喜欢
  • 2017-12-05
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多