primefaces 对话框框架:关闭对话框 "onclick"

primefaces dialog framework: close dialog "onclick"

我使用对话框框架展示了一个 Primefaces 对话框,这样:

RequestContext.getCurrentInstance().openDialog("myDialog", options, params);

在页面 myDialog.xhtml 我有一条消息和两个按钮:是或否。 我想关闭带有事件 "onclick" 的 Pf 对话框,有没有办法做到这一点?

我不能使用 p:dialog 静态定义对话框,也不能使用 PF('widgetVarName').hide();

关闭它

一般来说,您可能需要这样的东西:

<p:commandButton action="#{someBean.closeDialog('yes')}" process="@form" update="@form"
    icon="#{icons.yes}" value="#{bundle.yes}" />

<p:commandButton action="#{someBean.closeDialog('no')}" process="@form" update="@form"
    icon="#{icons.no}" value="#{bundle.no}" />


public void closeDialog(String choice)
{
    RequestContext requestContext = RequestContext.getCurrentInstance();

    Object someData = executeChoice(choice);

    requestContext.closeDialog(someData);
}

否则,如果您确实需要在 onclick 上关闭对话框(听起来有点奇怪...),您可以使用:

<p:remoteCommand name="closeDialog" action="#{someBean.closeDialog}" process="@this" />

<p:commandButton type="button" onclick="closeDialog()" icon="#{icons.close}" 
    value="#{bundle.close}" />


public void closeDialog()
{
    RequestContext requestContext = RequestContext.getCurrentInstance();

    requestContext.closeDialog(null);
}

最后,如果您需要 纯 javascript 解决方案,您可能需要:

<p:commandButton type="button" 
    onclick="PrimeFaces.closeDialog({pfdlgcid:'#{param.pfdlgcid}'})" 
    icon="#{icons.close}" value="#{bundle.close}" />