如何检查页面是否在对话框上下文中打开?

How do you check if a page is open in a dialog context?

我使用 JSF 和 Primefaces 的对话框框架在单击按钮时打开对话框。我有一个 xhtml 页面,可以在它自己的页面和对话框中打开。有没有办法在托管 bean 调用中检查 RequestContext 是否来自对话框?

类似于:

RequestContext.getCurrentInstance().isDialogContext();

然后有条件地调用:

RequestContext.getCurrentInstance().closeDialog(null);

您必须检查特定的请求参数。

这是一个 GET 参数,它附加在脚本中,该脚本在包含的 iframe URL.

上启动对话框

查看 DialogNavigationHandler 了解详情。

public static boolean isDialogContext()
{
    return FacesContext.getCurrentInstance()
        .getExternalContext()
        .getRequestParameterMap()
        .containsKey(Constants.DIALOG_FRAMEWORK.CONVERSATION_PARAM);
}

其中常量是 org.primefaces.util.Constants