0

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

我的primeface组件有问题,我正在尝试从ap:commandButton刷新ap:selectOneMenu,但它不起作用(它在另一个xhtml页面上工作,但不是在这里,我不明白为什么...)

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

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

我的表单包含在另一个 xhtml 页面的 ap: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" />

感谢帮助。

4

1 回答 1

0

从您的代码:

udpate=":tabView:formSujet:listeUser" 

这至少有 2 个(潜在的)错误。正确的属性名称是update,不是udpate。但是,另一个按钮上的那个具有正确的属性名称。

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

但是,毕竟,因为下拉列表和命令按钮都在同一个NamingContainer父级中,所以您根本不需要绝对的客户端 ID。只需相对客户端 ID 就足够了:

update="listeUser" 

在你的两个按钮上修复它。

也可以看看:

于 2013-09-02T21:09:23.283 回答