歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 使用Java代碼控制ADF table列進行QBE方式的過濾

使用Java代碼控制ADF table列進行QBE方式的過濾

日期:2017/3/1 10:40:04   编辑:Linux編程

在ADF中,使用af: table的時候,可以非常簡單地設置Table是否使用QBE filter fields;如下圖,只要選中Filtering就可以。


jspx中自動產生如下代碼:

[html]
  1. filterModel="#{bindings.DeptView1Query.queryDescriptor}"

運行應用後,所有記錄顯示如下:


類似Oracle form中的操作,在列中輸入值,點擊回車過濾數據:



如果希望在managed bean中使用程序控制QBE的邏輯,可以參考Steve Muench的Sample:http://blogs.oracle.com/smuenchadf/resource/examples#146

運行後的效果如下圖,過濾部門編號:


點擊[Set Dname,Loc Search fields & Reexecute Query],重置filter fields,並執行查詢:



被ADF封裝後的框架,FilterableQueryDescriptor對應table.getFilterModel(),也就是jspx頁面中af: table綁定的filterMoel屬性;為了使用Java代碼控制filter的邏輯,需要使用FilterableQueryDescriptor的getFilterCriteria()方法;getTableFilterCriteria().clear()可以清空所有的綁定參數,getTableFilterCriteria().put("Dname","%N%")給Dname設置綁定值。

部分Java代碼片段:

[java]
  1. public String onProgrammaticallySetFilterCriteriaAndReexecuteQuery() {
  2. getTableFilterCriteria().clear();
  3. getTableFilterCriteria().put("Dname","%N%");
  4. getTableFilterCriteria().put("Loc","%O%");
  5. queueTableQueryEvent();
  6. return null;
  7. }
當然,也可以使用Java代碼調用EL表達式關聯的method,下面的代碼執行Query table操作:

[java]
  1. EL.invokeMethod("#{bindings.DeptView1Query.processQuery}",QueryEvent.class,queryEvent);

使用QBE filter field的方式進行數據過濾十分簡單方便,頁面不需要設置查詢區域,布局也容易控制;不過,國內的客戶似乎更習慣在查詢區域輸入條件進行數據過濾,讓客戶接受我們的設計方案似乎更加有挑戰。


盧玉雙 2012/01/11 @上海

Copyright © Linux教程網 All Rights Reserved