OAF_開發系列13_實現OAF經過Vector動態查詢設置(案例)

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

相關文章
相關標籤/搜索