添加/删除项目时Richfaces pickList ajax事件

时间:2013-06-10 14:49:34

标签: java ajax jsf jsf-2 richfaces

将项目添加到richfaces(4.3.1.Final)pickList时是否会触发ajax事件?我需要启用禁用按钮,具体取决于是否已选择任何项目。

开发人员指南根本没有提到这一点,但我在谷歌搜索时找到了this。使用建议的解决方案,我使用了以下ajax事件:

<rich:pickList 
        var="item"
        value="#{someBean.selectedItems}">
    <a4j:ajax event="sourceblur" render="somePanelGroupWithTheButton" />
    <a4j:ajax event="targetblur" render="somePanelGroupWithTheButton" />
</rich:pickList>

这很有效。但是,每次源或目标列表模糊时都会触发事件,这对我的需求来说太频繁了。

我还尝试了<a4j:ajax event="additems" /><a4j:ajax event="removeitems" />。在这种情况下,事件仅在删除或添加项目时触发,完全符合我的要求。但是,在事件被触发之前,selectedItems不会填充新项目。这意味着我无法使用它来重新渲染按钮,因为在添加第一个项目后列表将为空,并且在添加第二个元素后列表大小为一。

在目标列表(selectedItems)更新后,是否有ajax事件可以侦听该触发器? (并且必须有一个完整的此组件支持的ajax事件列表,对吗?

我也按照建议here尝试了更改事件,但未触发。

2 个答案:

答案 0 :(得分:0)

刚刚再次尝试了更改事件,突然之间就有效了。我第一次尝试时可能是一个错字。这是要走的路:

<rich:pickList 
        var="item"
        value="#{someBean.selectedItems}">
    <a4j:ajax event="change" render="somePanelGroupWithTheButton" />
</rich:pickList>

触发事件并重新呈现somePanelGroupWithTheButton时,someBean.selectedItems已填充正确的项目。

这是4.3.0.M2中解决的缺陷:https://issues.jboss.org/browse/RF-12360

pickList支持的活动可在此处找到:http://docs.jboss.org/richfaces/4.3.X/4.3.0.CR1/vdldoc/rich/pickList.html

答案 1 :(得分:0)

试试这个:

<rich:pickList 
        var="item"
        value="#{someBean.selectedItems}">
    <a4j:ajax event="transfer" render="somePanelGroupWithTheButton" />
</rich:pickList>