我在bean方法中打开对话框
RequestContext.getCurrentInstance().openDialog("/pageName.xhtml", options, null);
点击按钮内actionListener
。
pageName.xhtml
上还有一个“关闭”按钮,执行:
RequestContext.getCurrentInstance().closeDialog(null);
但是对话框没有关闭。我实际需要的是捕获一个关闭事件,但我不能使用<p:ajax event="close"/>
,因为我没有p:dialog
元素而我无法通过放置在<p:ajax event="dialogReturn"/>
内p:commandButton
来管理它{1}}打开对话框。
我还尝试在打开并调用
时在选项图中添加widgetVar
PF('widgetVarName').hide();
点击。没有结果。
选项closable
设置为true
会在对话框窗口的右上方放置一个十字,这会关闭对话框,是的,但是,它没有触发关闭事件。
所以问题是:如何关闭对话框并在之后执行一些代码?
提前谢谢!
答案 0 :(得分:0)
此代码适用于我:
<强>的index.xhtml 强>
<p:commandButton id="openDialogButton" value="open dialog" action="#{myBean.openDialog('origin')}">
<!-- dialogReturn event: data could be passed, see page 587 in PF 6.1 manual. -->
<p:ajax event="dialogReturn" listener="#{myBean.doSthOnDialogReturn}"/>
</p:commandButton>
<强> myDialogPage.xhtml 强>
<p:commandButton id="closeButtonDialog" value="close dialog"
action="#{myBean.closeDialog('false')}"/>
<p:commandButton id="closeButtonDialog2" value="close dialog 2"
action="#{myBean.closeDialog('true')}"
ajax="false" validateClient="true"/>
注意:示例显示如何从对话框传递参数。您还可以注意到,第一个按钮刚刚返回,而第二个按钮首先进行验证。我认为这些事情很有用。
<强> myBean.java 强>
public void openDialog(String origin) {
RequestContext.getCurrentInstance().openDialog("myDialogPage",
options, null);
}
public void closeDialog(Boolean param) {
RequestContext.getCurrentInstance().closeDialog(param);
}
public void doSthOnDialogReturn(SelectEvent event) {
if ((Boolean) event.getObject()) { // retrieve param value
doSth();
}
}