小编典典

JSF AJAX命令按钮未更新Primefaces选择列表

ajax

这是代码:

<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()中,我做了一些修改,所以我希望更新选择列表。但是,选择列表(id
= tags)不会再次呈现。仅当我刷新页面时,才会对选择列表进行修改。


阅读 206

收藏
2020-07-26

共1个答案

小编典典

PrimeFaces
<p:commandButton>组件无法与一起使用<f:ajax>。您需要使用按钮自己的以ajax为目标的属性。而不是<f:ajax execute>您应该使用<p:commandButton process>。但这已默认为@form,因此您可以忽略它。而不是<f:ajax render>您应该使用<p:commandButton update>。指定已经被覆盖的客户机ID
@form是不必要的,因此就@form足够了。该ajax="true"属性也是不必要的,因为它已经是默认值。

所以这应该做:

<p:commandButton value="Select tags" update="@form" />

具体问题 无关
,您正在使用getter方法进行业务工作。这是一个坏主意。而是按按钮的action方法进行操作。您似乎也正在使用会话范围的bean来查看范围的数据。这是一个坏主意。而是将bean放入视图范围。

2020-07-26