无法刷新selectOneMenu

时间:2013-09-02 07:59:15

标签: jsf-2 primefaces

首先请原谅我的英语,如果它不正确......

我遇到了一个关于Primeface组件的问题,我试图从ap:commandButton刷新ap:selectOneMenu,但它没有工作(它&# #39;在另一个xhtml页面上工作,但不在这里,我无法理解为什么......)

首先,我从p:autocomplete中选择一项更新后备属性的项目(例如: userChoose )。

然后p:commandButton能够调用他的监听器并将 userChoose 添加到列表中,但我无法刷新显示列表的selectOneMenu。我必须使用另一个p:commandButton刷新列表。

我的表单包含在另一个xhtml页面的p:tabMenu中。

<p:autoComplete id="acPojo" value="#{forumBean.user}" 
             completeMethod="#{autoCompleteBean.completeUser}" 
             converter="#{userConverter}" forceSelection="true"
             var="usr" itemLabel="#{usr.loginUtilisateur}" itemValue="#{usr}">  

     <p:column>  
        <h:outputText value="#{usr.loginUtilisateur}"/>
     </p:column>                
</p:autoComplete>       

 <p:commandButton value="ajouter" process="acPojo @this " 
    udpate=":tabView:formSujet:listeUser" actionListener="#{forumBean.addUser}"/>

 <p:selectOneMenu value="#{forumBean.user}" converter="#{userConverter}" var="us" id="listeUser" 
                  itemValue="#{us}" itemLabel="#{us.loginUtilisateur}">

       <f:selectItems value="#{forumBean.newSujet.listeUserAllowed}" var="User"
            itemValue="#{User}" itemLabel="#{User.loginUtilisateur}" />

       <p:column>
          <h:outputText value="#{us.loginUtilisateur}"/>
       </p:column>  

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

 </p:selectOneMenu>

 <p:commandButton id="refreshAdmin" icon="ui-icon-arrowrefresh-1-w" 
    update=":tabView:formSujet:listeUser" />

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

从你的代码:

udpate=":tabView:formSujet:listeUser" 

这至少有两个(潜在的)错误。正确的属性名称为update,而非udpate。然而,另一个按钮上的那个具有正确的属性名称。

它仍然不起作用,那么另一个潜在的错误是HTML DOM树中不存在客户端ID tabView:formSujet:listeUser(因此JavaScript / jQuery无法找到并替换它)。如果<p:tabView>是动态的(即您正在使用<p:tabView value="#{bean.tabs}" var="tab">,则可能会发生这种情况,因为它会在最终客户端ID中预先设置选项卡索引号,如果它是第一个选项卡,则会tabView:0:formSujet:listeUser。< / p>

但是,毕竟,由于下拉列表和命令按钮都在同一个NamingContainer父级中,因此根本不需要绝对客户端ID。只需相对客户ID即可:

update="listeUser" 

修复两个按钮。

另见: