JSF ajax 命令按钮不更新 primefaces 选择列表 [英] JSF ajax commandbutton not updating primefaces picklist

查看:20
本文介绍了JSF ajax 命令按钮不更新 primefaces 选择列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是代码:

<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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆