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

时间:2017-01-19 16:37:49

标签: primefaces jsf-2

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

类似的东西:

private List<TableMetaData> tableMetaData = new List<TableMetaData>();
public class TableMetaData
{
    public string TableName;
    public string ReferenceTableName;
    public bool IsAuditTable;
    public bool IsSyncTable;
    public bool IsView;
}
public List<string> GetTableNames(TableMetaData filterData)
{
    List<string> filteredNames = tableMetaData
        .Where(table => (table.IsAuditTable == filterData.IsAuditTable)
            && (table.IsSyncTable == filterData.IsSyncTable)
            && (table.IsView == filterData.IsView))
        .Select(table => table.TableName).ToList();

    return filteredNames;
}

然后有条件地调用:

RequestContext.getCurrentInstance().isDialogContext();

1 个答案:

答案 0 :(得分:2)

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

这是一个GET参数,它附加在脚本上,该脚本会在包含的iframe网址上启动对话框。

查看DialogNavigationHandler了解详情。

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

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