primefaces对话框架:关闭对话框“onclick”

时间:2017-01-19 16:27:39

标签: primefaces dialog jsf-2.2

我使用对话框框架以这种方式显示Primefaces对话框:

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

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

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

关闭对话框

1 个答案:

答案 0 :(得分:2)

通常,您可能需要以下内容:

<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}" />