OAF中如何更改query的默认查询

OA Framework使用Query Region来创建查询,可以创建简单的查询、高级查询和保存用户个性化的查询。query Region有三种构建方式:

 

1,resultsBasedSearch

OA Framework根据查询结果表格(或HGrid)中定义的可查询的Item自动生成查询面板。OA Framework在用户选择查询按钮后自动根据用户输入的值,生成Where子句,并执行查询。

 

2,autoCustomizationCriteria

OA Framework根据开发者定义的简单查询和高级查询Region生成查询面板。OA Framework在用户选择查询按钮后,根据用户输入的值,生成Where子句,并执行查询。

利用这种模式可以更改查询项的类型,比如使用LOV、Poplist等,还可以加入结果表(或HGrid)中不存在的查询项目。

 

3,None

OA Framework根据开发者定义的简单查询和高级查询Region生成查询面板。开发人员需要自己实现视图对象的查询逻辑。这种方式一般用于无法使用query Region所提供的功能的情况。

 

本文主要介绍在autoCustomizationCriteria模式下如何控制query的查询。比如对于日期的查询一般用区间范围进行查询,而默认情况下,OA Framework生成的Where子句做相等比较。

  1. 为query Region创建简单查询面板,创建各个查询Item,包括日期从和日期至。
  2. 为各个查询Item创建SearchMapping,除了日期从和日期至两个查询项。此时除了日期范围,其余项目的查询都已经可用。
  3. 在query Region所在的Controller类processFormRequest()方法中加入以下代码

           

OAQueryBean querybean = (OAQueryBean)webBean.findIndexedChildRecursive("QueryRN");
// 判断用户是否选择了查询按钮
if (pageContext.getParameter(querybean.getGoButtonName()) != null)
{ 
  String dateFrom = pageContext.getParameter("SearchDateFrom");
  String dateTo = pageContext.getParameter("SearchDateTo");
 
  OAApplicationModule am = pageContext.getApplicationModule(webBean);
  Serializable[] params = {dateFrom, dateTo};
 
  am.invokeMethod("bindDateRangeWhereClause", params);
}
 


 

4.应用程序模块中方法如下:

public void bindDateRangeWhereClause(String dateFrom, String dateTo)
{
   OAViewObject vo = getXxxVO1();
 
   String clause = null;
   String joinStr = "";
   if (vo.getWhereClause() != null)
   {
     joinStr = "AND";
   }
 
   if ((dateFrom != null) && (!("".equals(dateFrom.trim()))))
   {
     clause = " RECEIPT_DATE >= :";
     whereClause.append(++bindCount);
     parameters.addElement(Date.valueOf(dateFrom));
     clauseCount++;
}
// 条件:接收日期至
if ((dateTo != null) && (!("".equals(dateTo.trim()))))
{
  if (clauseCount > 0)
   {
     whereClause.append(" AND "); 
   }
  whereClause.append(" RECEIPT_DATE <= :");
  whereClause.append(++bindCount);
  parameters.addElement(Date.valueOf(dateTo));
  clauseCount++;
}
 


 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值