检索ADF查询组件的模式(基本|高级)

时间:2010-07-16 19:45:10

标签: oracle-adf

我想在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()返回空映射。

2 个答案:

答案 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())){

}