我想在QueryEvent的processQuery事件监听器方法中捕获查询组件模式(Basic | Advanced),如下所示:
public void processQuery(QueryEvent queryEvent)
{
// Add event code here...
QueryDescriptor qdesc = queryEvent.getDescriptor();
String searchName = qdesc.getName();
String queryMode =?
我尝试使用UIHINT_MODE键从getUIHints()映射中获取此值。但getUIHints()返回空映射。
答案 0 :(得分:1)
试试这个:
ViewCriteria vc = null;
try
{
Method m =
pQueryDescriptor.getClass().getDeclaredMethod("getViewCriteria",
null);
m.setAccessible(true);
vc = (ViewCriteria) m.invoke(pQueryDescriptor, null);
}
catch (Exception ite)
{
_logger.logp(Level.SEVERE, CLAZZ_NAME, methodName,
"Exception getting ViewCriteria from QueryDescriptor.",
ite);
}
String searchType =
(String) vc .getProperty(ViewCriteriaHints.CRITERIA_MODE);
我们的想法是从QueryDescriptor获取ViewCriteria并从VC获取模式。这是因为模式是在条件对象本身上设置的,VC知道如何显示以及在每种模式下显示什么,因此它使MODE成为VC的固有属性而不仅仅是UI的东西...... / p>
答案 1 :(得分:0)
QueryDescriptor qdesc = queryEvent.getDescriptor();
QueryDescriptor.QueryMode mode = (QueryDescriptor.QueryMode) qdesc.getUIHints().get(qdesc.UIHINT_MODE);
if(“ BASIC” .equals(mode.toString())){
}