首先,解释我正在努力实现的目标:
我正在从表单中打开一个弹出式面板。此弹出窗口能够打开第二个弹出窗口(确认),然后从服务器调用操作,并在操作完成时关闭两个弹出窗口。
如何在完成操作后关闭两个弹出窗口(ActionListener)?
以下是我的两个例子:
<!-- language: lang-html -->
<a4j:commandButton value="execute"
action="#{navigationController.navigateSomewhere}"
actionListener="#{beanController.doSomething}"
render="datatable,navigationDiv">
<rich:componentControl event="click" target="firstPopup, confirmPopup"
operation="hide" />
</a4j:commandButton>
componentControl似乎禁用了XHR调用,是否有意?
<!-- language: lang-html -->
<a4j:commandButton value="execute"
action="#{navigationController.navigateSomewhere}"
actionListener="#{beanController.doSomething}"
render="datatable,navigationDiv"
oncomplete="#{rich:component('firstPopup')}.hide()
#{rich:component('confirmPopup')}.hide()">
</a4j:commandButton>
很明显,第二个建议不起作用,也不加“AND”。顺便说一句,我使用 Richfaces 4.3.1 和 JSF 2.0 。删除componentControl后,XHR调用成功完成,但两个弹出窗口仍将保留在显示屏上。此外,还链接到组件的VDL文档。
根据componentControl的描述,我的应用程序不应该这样:
该行为允许在目标组件上调用JavaScript API函数。在组件上触发定义的事件之后调用函数,并附加行为。可以自定义初始化变体和激活事件,并且可以将参数传递给目标组件。
答案 0 :(得分:3)
您是否尝试过良好的语法:
oncomplete="#{rich:component('firstPopup')}.hide();#{rich:component('confirmPopup')}.hide();"