首先请原谅我的英语,如果它不正确......
我遇到了一个关于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" />
感谢您的帮助。
答案 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"
修复两个按钮。