【问题标题】:can't refresh a selectOneMenu无法刷新 selectOneMenu
【发布时间】:2013-09-02 07:59:15
【问题描述】:

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

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

首先,我从更新 backingbean 属性的 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" />

感谢您的帮助。

【问题讨论】:

  • 请发forumBean.addUser的代码。

标签: jsf-2 primefaces


【解决方案1】:

来自您的代码:

udpate=":tabView:formSujet:listeUser" 

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

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

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

update="listeUser" 

修复两个按钮上的问题。

另见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多