【发布时间】:2013-06-10 14:49:33
【问题描述】:
当项目被添加到 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 的建议尝试了更改事件,但它没有被触发。
【问题讨论】:
-
你可以试试股票 JSF 事件,也许是
<f:event type="postValidate"/>? -
供将来参考,支持的事件列表在official docs
-
谢谢,添加到我的答案中。不过,他们确实应该在可下载的 pdf 中包含此类内容。
标签: java ajax jsf jsf-2 richfaces