JSF ajax 命令按钮不更新 primefaces 选择列表 [英] JSF ajax commandbutton not updating primefaces picklist
问题描述
这是代码:
<h:form id="articleForm" >
<p:commandButton value="Select tags" ajax="true" >
<f:ajax execute="@form" render="@form :articleForm:tags" />
</p:commandButton>
<p:pickList id="tags" value="#{articleController.dualListModelForTags}" var="tag" itemLabel="#{tag.tag}" itemValue="#{tag}" converter="distinctTagConverter">
<f:facet name="sourceCaption">Distinct tags</f:facet>
<f:facet name="targetCaption">Connected tags</f:facet>
</p:pickList>
</h:form>
当单击命令按钮时,调用并执行支持 bean 中的 getDualListModelForTags().在 getDualListModelForTags() 中,我进行了一些修改,因此我希望更新选择列表.但是picklist(id=tags) 不会再次呈现.只有当我刷新页面时,才会对选项列表进行修改.
When the commandbutton is clicked, the getDualListModelForTags() in the backing bean is called and executed. In getDualListModelForTags() I make some modifications so I want the picklist to be updated. But the picklist(id=tags) is not rendered again. Only when I refresh the page, are the modifications made to the picklist.
推荐答案
PrimeFaces
组件无法与
一起使用代码>.您需要改用按钮自己的 ajax 目标属性.您应该使用
而不是
.但这已经默认为 @form
,所以你可以省略它.您应该使用
而不是
.指定已经被 @form
覆盖的客户端 ID 是不必要的,所以只需要 @form
就足够了.此外 ajax="true"
属性是不必要的,因为它已经是默认值.
The PrimeFaces <p:commandButton>
component doesn't work together with <f:ajax>
. You need to use the button's own ajax-targeted attributes instead. Instead of the <f:ajax execute>
you should use <p:commandButton process>
. But this already defaults to @form
, so you can omit it. Instead of the <f:ajax render>
you should use <p:commandButton update>
. Specifying client IDs which are already covered by @form
is unnecessary, so just @form
is sufficient. Also the ajax="true"
attribute is unnecessary as that's the default already.
所以应该这样做:
<p:commandButton value="Select tags" update="@form" />
<小时>
与具体问题无关,您在 getter 方法中执行业务工作.这是一个坏主意.而是在按钮的 action
方法中执行此操作.您似乎也在使用会话范围的 bean 来查看范围数据.这是一个坏主意.将 bean 放入视图范围.
Unrelated to the concrete problem, you're doing the business job inside a getter method. This is a bad idea. Do it in the button's action
method instead. You also seem to be using a session scoped bean for view scoped data. This is a bad idea. Put the bean in the view scope instead.
这篇关于JSF ajax 命令按钮不更新 primefaces 选择列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!