OpenJWeb 1.6版本中实现动态设置页面的查询条件列

俗话说,是金子总会发光的,openjweb仍然是一枝java快速开发平台领域的空谷幽兰,当java技术界的人士在密切地关注着

appfuse,springside,fastunit等许多快速开发平台的时候,openjweb也在默默无闻地成长。作者既然已辞去了年薪20多万的工作专职从事openjweb开发,就没有理由不让她变的枝繁叶茂。她一旦最终成长壮大起来,必然会成为java领域web应用快速开发的利器,成为企业用户自主开发应用的有力工具。许多软件公司口头上喊着要节约成本,但从不注重平台的设计和开发,由此带来的软件开发人员低水平重复开发不说,还使得项目成本局高不下,严重降低项目的利润率,他们从短期上不肯投入平台研发,必将导致项目利润率长期难以提高。

今天完成了动态设置页面查询条件列后,心情变的太好了!一度沉浸在创造的快乐中。openjweb变强大了,我想凡是做过企业软件的人都知道,一个功能页面的查询条件(尤其是字段多的页面),无论设置什么查询字段,客户总是经常地要你更改,下面是动态设置查询条件字段的过程,通过平台可以任意定义哪些字段作为查询条件显示在页面中,并可指定输入框、下拉列表、日期选择、弹出选择等几种输入方式,下面是具体介绍:

在项目开发中,列表页面中的查询条件列经常会因为用户的要求而不断改变,在传统的开发模式下,需要程序员不断地手工修改页面代码和查询条件,非常不方便。本平台实现了动态设置查询条件列,即由用户指定哪些列是查询条件列,并且可设置这些查询条件列的输入方式:输入框、日期选择、下拉选择,还是参照弹出式窗口,当设置好这些查询条件列,再由平台的生成页面功能重新生成一次页面就可以了,完全不需要开发人员参与修改代码。

这无疑在项目开发中大大节省了开发成本。

操作过程:

(1) 首先定义表字段中哪些应作为查询条件列,见下图:OpenJWeb 1.6版本中实现动态设置页面的查询条件列_第1张图片

2-11 查询条件列设置

我们可以以应聘简历信息表为例,设置学历,应聘人员姓名、出生日期、empTest1测试字段为查询条件列(是否查询条件列选择“是”),并分别设置学历字段的数据字典类型,出生日期的页面输入方式为“日期选择器”,empTest1测试字段的弹出窗口选择一个进行测试,设置完成后保存,然后进入图2-4功能定义,选择hr_resume对应的行,点“生成代码”,完成编译。访问:http://localhost:8088/crm/hr/listHrResume.action,显示生成的页面见下图:

OpenJWeb 1.6版本中实现动态设置页面的查询条件列_第2张图片

2-12 动态设置查询条件列

从上图看出,查询条件有文本输入框、下拉选择、日期选择、参照弹出窗口四种方式,这几个查询条件列可组合查询,没输入的不作为查询条件列。并且查询完成后,查询字段带有记忆功能,可显示查询前的条件。如果需要增加和删除查询条件列,可重新设置字段属性并重新在功能定义页面中点“生成代码”即可。由此可见,当用户需要更改页面上的查询条件列时,不再需要求助于软件开发人员了。下面是生成的页面中动态生成的查询条件列的部分代码:

查询条件输入框(动态生成):

<td>应聘人员姓名&nbsp;<input type="text" name="queryCol1" value="${queryCol1}" style="width:100"/>

学历&nbsp;<%=DropdownListBoxUtil.getList("queryCol2","IDBSupportService3","HR_XUELI","${currUser}","zh-CN","","${queryCol2}") %>

出生日期&nbsp;<input type="text" name="queryCol3" class="wDate" onfocus="new WdatePicker(this)" value="${queryCol3}" style="width:100"/>

ewwe&nbsp;<input type="text" name="queryCol4"/><input type="text" name="nameField"/> <image src="<%=request.getContextPath()%>/images/icon.gif" onclick="window.open('<%=request.getContextPath()%>/hr/popupHrResume.action?codeField=queryCol4&nameField=nameField');"/>

<a href="#" class="button" onClick="doSearch()"> <s:text name="button.query"/></a>&nbsp;&nbsp;</td>

构造查询条件的js代码(平台动态生成)

function doSearch()

{

document.listForm.elements['pageLoader.filterSqlWhere'].value ="";

var tmp="(1=1) ";

var col1 = Trim(document.listForm.queryCol1.value);

if(col1.length>0 )

{

tmp+=" and empName like '%"+col1+"%'";

}

var col2 = Trim(document.listForm.queryCol2.value);

if(col2.length>0 )

{

tmp+=" and empXueli like '%"+col2+"%'";

}

var col3 = Trim(document.listForm.queryCol3.value);

if(col3.length>0 )

{

tmp+=" and empBirthDate like '%"+col3+"%'";

}

var col4 = Trim(document.listForm.queryCol4.value);

if(col4.length>0 )

{

tmp+=" and empTest1 like '%"+col4+"%'";

}

document.listForm.elements['pageLoader.filterSqlWhere'].value = tmp;

document.listForm.submit();

}

你可能感兴趣的:(设计模式,软件测试,企业应用,Appfuse)