0

我想在 QueryEvent 的 processQuery 事件侦听器方法中捕获查询组件模式(基本 | 高级),如下所示:

public void processQuery(QueryEvent queryEvent)
{
// Add event code here...
QueryDescriptor qdesc = queryEvent.getDescriptor();
String searchName = qdesc.getName();
String queryMode =?

我尝试使用 UIHINT_MODE 键从 getUIHints() 映射中获取此值。但 getUIHints() 返回空地图。

4

2 回答 2

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 的东西....

于 2010-11-02T22:44:54.603 回答
1
QueryDescriptor qdesc = queryEvent.getDescriptor();
QueryDescriptor.QueryMode mode = (QueryDescriptor.QueryMode) qdesc.getUIHints().get(qdesc.UIHINT_MODE);

if("BASIC".equals(mode.toString())){

}
于 2018-09-24T09:35:16.507 回答