0

以下のように、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() は空のマップを返します。

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);

アイデアは、ViewCriteria を QueryDescriptor から取得し、モードを VC から取得することです。これは、モードが基準オブジェクト自体に設定されているためです。VC は、各モードで表示する方法と表示するものを知っているため、MODE を単なる UI のものではなく、VC の固有のプロパティにします....

于 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 に答える