我正在使用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();
答案 0 :(得分:2)
您必须检查特定的请求参数。
这是一个GET
参数,它附加在脚本上,该脚本会在包含的iframe网址上启动对话框。
查看DialogNavigationHandler了解详情。
public static boolean isDialogContext()
{
return FacesContext.getCurrentInstance()
.getExternalContext()
.getRequestParameterMap()
.containsKey(Constants.DIALOG_FRAMEWORK.CONVERSATION_PARAM);
}
其中常量为org.primefaces.util.Constants