OAF实现客户化查询 .

来源:互联网 发布:html5仿淘宝手机商城 编辑:程序博客网 时间:2024/05/14 12:05

在OAF中,存在标准的查询面板,但是标准的查询只能实现基础、简单的查询,所以在真正的项目当中,一般情况下都是使用自己开发的客户化查询,开发客户化查询的一般步骤如下:

 

1. 建立页面PG,修改Region

ID

PageLayoutRN

Region Style

PageLayout

AM Definition

RootAM

Window Title

xxx 

Title

xxx

 

2. 在PageLayoutRN下建立Region,属性如下:

ID

MessageComponentLayoutRN

Region Style

MessageComponentLayout

Width

100%

Rows

2

Columns

6

 

3. 在MessageComponentLayoutRN下新建搜索项(lov形式)

 

ID

SearchProject

Item Style

MessageLovInput

External LOV

XXX

Prompt

XXX

这里的External LOV是来源于lov的region。

 

 

4.建立LOV的页面,建立一个listOfValues的region

Region Style

ListOfValues

Scope

Public

AM Definition

LovAM

 

5. 基于vo,建立resultTable,ProjectId项的属性

ID

ProjectId

Item Style

Formvalue

 

6. 在建立的lov组件下建立map映射

ID

ProjectNameMap

LOV Region Item

ProjectName

Return Item

SearchProject

Criteria Item

SerachProject

 

7.下拉框形式组件

ID

SearchProjectPhase

Item Style

MessageChoice

Picklist View Definition

cux.oracle.apps.pa.lov.server.ProjectPhaseVO

Picklist Display Attribute

ProjectStatusName

Picklist Value Attribute

ProjectStatusName

Prmpt

 

 

8. 建立ResultTable

Width

100%

 

9. 在messageComponentLayout Components下添加footer,在region下添加query按钮

ID

Query

Item Style

SubmitButton

Prompt

搜索(&S)

10.继续添加SpaceBean

ID

SpacerBean

Item Style

Spacer

Width

5

11. 继续添加cancel按钮

ID

Cancel

Item Style

SubmitButton

Disable Client Side Validation

True

Prompt

清除(&C)

上面的步骤是建立好一个搜索面板,下面编写搜索逻辑代码。

 

首先在co中捕捉点击搜索按钮的事件:

[java] view plaincopyprint?
  1. public void processFormRequest(OAPageContext pageContext,   
  2.                                OAWebBean webBean) {  
  3.     super.processFormRequest(pageContext, webBean);  
  4.     OAApplicationModule am = pageContext.getApplicationModule(webBean);  
  5.     if (pageContext.getParameter("Cancel") != null) {  
  6.         String[] webBeanNames =   
  7.         { "SearchProject", "SearchCustomer", "SearchAreaCode",   
  8.           "SearchWindCode", "SearchMachineModel", "SearchProjectPhase",   
  9.           "SearchReportStartDate", "SearchReportEndDate",   
  10.           "SearchProjectManager", "SearchProjectId", "SearchPartyId" };  
  11.         WebBeanUtil.resetWebBean(pageContext, webBean, webBeanNames);  
  12.     } else if (pageContext.getParameter("Query") != null) {  
  13.         String searchProjectId =   
  14.             pageContext.getParameter("SearchProjectId");  
  15.         String searchPartyId = pageContext.getParameter("SearchPartyId");  
  16.         String searchAreaCode = pageContext.getParameter("SearchAreaCode");  
  17.         String searchWindCode = pageContext.getParameter("SearchWindCode");  
  18.         String searchMachineModel =   
  19.             pageContext.getParameter("SearchMachineModel");  
  20.         String searchProjectPhase =   
  21.             pageContext.getParameter("SearchProjectPhase");  
  22.         Date searchReportStartDate =   
  23.             DateUtil.toDate(pageContext, pageContext.getParameter("SearchReportStartDate"));  
  24.         Date searchReportEndDate =   
  25.             DateUtil.toDate(pageContext, pageContext.getParameter("SearchReportEndDate"));  
  26.         String searchProjectManager =   
  27.             pageContext.getParameter("SearchProjectManager");  
  28.         Serializable[] params =   
  29.         { searchProjectId, searchPartyId, searchAreaCode, searchWindCode,   
  30.           searchMachineModel, searchProjectPhase, searchReportStartDate,   
  31.           searchReportEndDate, searchProjectManager };  
  32.         Class[] classes =   
  33.         { String.class, String.class, String.class, String.class,   
  34.           String.class, String.class, Date.class, Date.class,   
  35.           String.class };  
  36.         am.invokeMethod("queryStatusReport", params, classes);  
  37.     }  
  38. }  

搜索逻辑代码:

[java] view plaincopyprint?
  1. public void queryStatusReport(String searchProjectId,  
  2.                               String searchPartyId,  
  3.                               String searchAreaCode,  
  4.                               String searchWindCode,  
  5.                               String searchMachineModel,  
  6.                               String searchProjectPhase,  
  7.                               Date   searchReportStartDate,  
  8.                               Date   searchReportEndDate,  
  9.                               String searchProjectManager)  
  10. {  
  11.     StatusReportVOImpl vo = getStatusReportVO1();  
  12.     vo.setWhereClause(null);  
  13.     vo.setWhereClauseParams(null);  
  14.     int bindCount = 0;          
  15.     StringBuffer whereClause =new StringBuffer(400);  
  16.     whereClause.append(" 1=1");  
  17.     Vector params = new Vector(9);  
  18.       
  19.     if (searchProjectId!=null && !("".equals(searchProjectId))){  
  20.         whereClause.append(" AND project_id = :");  
  21.         whereClause.append(++bindCount);  
  22.         params.addElement(searchProjectId);  
  23.     }  
  24.     if (searchPartyId!=null && !("".equals(searchPartyId))){  
  25.         whereClause.append(" AND party_id = :");  
  26.         whereClause.append(++bindCount);  
  27.         params.addElement(searchPartyId);  
  28.     }  
  29.     if (searchAreaCode!=null && !("".equals(searchAreaCode))){  
  30.         whereClause.append(" AND area_code = :");  
  31.         whereClause.append(++bindCount);  
  32.         params.addElement(searchAreaCode);  
  33.     }  
  34.     if (searchWindCode!=null && !("".equals(searchWindCode))){  
  35.         whereClause.append(" AND wind_code = :");  
  36.         whereClause.append(++bindCount);  
  37.         params.addElement(searchWindCode);  
  38.     }  
  39.     if (searchMachineModel!=null && !("".equals(searchMachineModel))){  
  40.         whereClause.append(" AND cux_pa_util_pkg.get_pa_machine_model(project_id,:");  
  41.         whereClause.append(++bindCount);  
  42.         whereClause.append(") = 'Y'");  
  43.         params.addElement(searchMachineModel);  
  44.     }  
  45.     if (searchProjectPhase!=null && !("".equals(searchProjectPhase))){  
  46.         whereClause.append(" AND current_phase_name = :");  
  47.         whereClause.append(++bindCount);  
  48.         params.addElement(searchProjectPhase);  
  49.     }  
  50.     if (searchReportStartDate!=null && !("".equals(searchReportStartDate))){  
  51.         whereClause.append(" AND report_start_date >= :");  
  52.         whereClause.append(++bindCount);  
  53.         params.addElement(searchReportStartDate);  
  54.     }  
  55.     if (searchReportEndDate!=null && !("".equals(searchReportEndDate))){  
  56.         whereClause.append(" AND report_start_date <= :");  
  57.         whereClause.append(++bindCount);  
  58.         params.addElement(searchReportEndDate);  
  59.     }  
  60.     if (searchProjectManager!=null && !("".equals(searchProjectManager))){  
  61.         whereClause.append(" AND project_manager = :");  
  62.         whereClause.append(++bindCount);  
  63.         params.addElement(searchProjectManager);  
  64.     }  
  65.       
  66.     if (bindCount >0){  
  67.         vo.setWhereClause(whereClause.toString());  
  68.         Object[] bindParams = new Object[bindCount];     
  69.         params.copyInto(bindParams);  
  70.         vo.setWhereClauseParams(bindParams);  
  71.     }  
  72.       
  73.     vo.executeQuery();                               
  74. }  

 

结果如下

来源:http://blog.csdn.net/wang_zhou_jian/article/details/5785028