无法将侦听器附加到关闭对话框按钮

时间:2014-12-17 07:58:53

标签: jsf events primefaces

我正在使用PrimeFaces对话框架。对话框窗口在拐角处有一个小x,用于关闭它。我可以附上一些代码吗?

我试过了:

<p:commandButton id="btn_open" value="add" process="" update="messages" action="#{bean.openDialog}">
                <p:ajax event="dialogReturn" listener="#{bean.onDialogClose}" update="messages"/>
            </p:commandButton>

public void onDialogClose(CloseEvent event){
}

但无济于事,我从未进入onDialogClose函数。

我认为这是错误的事件或签名,但我无法在文档中找到答案。

1 个答案:

答案 0 :(得分:3)

dialogReturn事件必须由

处理
public void onDialogReturn(SelectEvent event)
{
     Object obj = event.getObject();
}

明确触发
RequestContext.getCurrentInstance().close(obj);

在对话方面。

用右上角关闭对话框&#34; X&#34;按钮不会触发dialogReturn事件。

我不知道是否可以处理对话框架关闭事件,我想到的第一件事是打开带有选项closable="false"的对话框并创建另一个关闭按钮它

public void open(String outcome)
{
    Map<String, Object> options = new HashMap<>();
    options.put("closable", false);

    RequestContext.getCurrentInstance().openDialog(outcome, options, null);
}

然后管理这个状态:

public void onDialogReturn(SelectEvent event)
{
     Object obj = event.getObject();
     if(obj == null)
     {
         // handle close
     }
     else
     {
         // handle object returned
     }
}