对话框框架未触发关闭事件

时间:2018-02-28 12:03:24

标签: jsf primefaces

我在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会在对话框窗口的右上方放置一个十字,这会关闭对话框,是的,但是,它没有触发关闭事件。

所以问题是:如何关闭对话框并在之后执行一些代码?

提前谢谢!

1 个答案:

答案 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();
    }
}