20150715 Created By BaoXinjianjava
1、摘要web
Oracle OAF Guide上介紹的標準客製化查詢的方式,在多條件下進行查詢
app
具體實現步驟以下 ide
Step1.在controler中的processRequest 的方法中調用函數
(1). am.invokeMethod("vectorQuery", parameters);post
(2). 固然要調用invokeMethod方法先要 OAApplicationModule am = pageContext.getApplicationModule(webBean) 來實例化am;、;測試
(3). initDetails是寫在AM的java 文件的中的一個方法,parameters能夠用pageContext.getParameters 方法獲得你想要的任何參數;ui
Step2. 在AM的java文件中寫一個vectorQuery方法函數,來調用VO中的方法。this
Step3. 在VO中添加下面的代碼,這個代碼是從OAF的UG裏面拿出來的,我以爲這段代碼比較的經典,之後在開發中會不斷的用到;spa
2、實現方式
1. 建立查詢頁面以下,新增按鈕SearchEmployee,並觸發時間Search
2. 在CO中新增方法,獲取Search時間,並調換用AM中的實現方法
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean) { super.processFormRequest(pageContext, webBean); if ("Search".equals(pageContext.getParameter(EVENT_PARAM))) { String p_employee_num = pageContext.getParameter("EmployeeNumQ"); String p_employee_name = pageContext.getParameter("EmployeeNameQ"); String p_employee_country = pageContext.getParameter("EmployeeCountryQ"); Serializable[] params = {p_employee_num, p_employee_name, p_employee_country}; OAApplicationModule am = pageContext.getApplicationModule(webBean); am.invokeMethod("vectorQuery",params); } }
3. 在AM中建立實現方法,最爲關鍵的一步
public void vectorQuery(String p_employee_num, String p_employee_name, String p_employee_country) { //VO初始化 EmployeesVOImpl employeevo = this.getEmployeesSearchVO(); //參數初始化 StringBuffer whereClause = new StringBuffer(100); Vector parameters = new Vector(3); int clauseCount = 0; int bindCount = 0; //加入第1個條件Employee Num if ((p_employee_num != null) && (!("".equals(p_employee_num.trim())))) { whereClause.append(" EMPLOYEE_NUM like :"); whereClause.append(++bindCount); parameters.addElement("%" + p_employee_num + "%"); clauseCount++; } //加入第2個條件Employee Name if ((p_employee_name != null) && (!("".equals(p_employee_name.trim())))) { if (clauseCount > 0) { whereClause.append(" AND "); } whereClause.append(" EMPLOYEE_NAME like :"); whereClause.append(++bindCount); parameters.addElement( "%" + p_employee_name + "%"); clauseCount++; } //加入第3個條件Employee Country if ((p_employee_country != null) && (!("".equals(p_employee_country.trim())))) { if (clauseCount > 0) { whereClause.append(" AND "); } whereClause.append(" EMPLOYEE_COUNTRY like :"); whereClause.append(++bindCount); parameters.addElement("%" + p_employee_country + "%"); clauseCount++; } //VO查詢WhereCause和Parameters賦值 employeevo.setWhereClause(whereClause.toString()); if (bindCount > 0) { Object[] params = new Object[bindCount]; parameters.copyInto(params); employeevo.setWhereClauseParams(params); } //進行查詢 employeevo.executeQuery(); }
3、測試運行
Test1. 打開測試頁面
Test2. 進行查詢,資料順利查出
Thanks and Regards
參考:http://shaofeng.blog.51cto.com/3392077/655682