俗话说,是金子总会发光的,openjweb仍然是一枝java快速开发平台领域的空谷幽兰,当java技术界的人士在密切地关注着
appfuse,springside,fastunit等许多快速开发平台的时候,openjweb也在默默无闻地成长。作者既然已辞去了年薪20多万的工作专职从事openjweb开发,就没有理由不让她变的枝繁叶茂。她一旦最终成长壮大起来,必然会成为java领域web应用快速开发的利器,成为企业用户自主开发应用的有力工具。许多软件公司口头上喊着要节约成本,但从不注重平台的设计和开发,由此带来的软件开发人员低水平重复开发不说,还使得项目成本局高不下,严重降低项目的利润率,他们从短期上不肯投入平台研发,必将导致项目利润率长期难以提高。
今天完成了动态设置页面查询条件列后,心情变的太好了!一度沉浸在创造的快乐中。openjweb变强大了,我想凡是做过企业软件的人都知道,一个功能页面的查询条件(尤其是字段多的页面),无论设置什么查询字段,客户总是经常地要你更改,下面是动态设置查询条件字段的过程,通过平台可以任意定义哪些字段作为查询条件显示在页面中,并可指定输入框、下拉列表、日期选择、弹出选择等几种输入方式,下面是具体介绍:
在项目开发中,列表页面中的查询条件列经常会因为用户的要求而不断改变,在传统的开发模式下,需要程序员不断地手工修改页面代码和查询条件,非常不方便。本平台实现了动态设置查询条件列,即由用户指定哪些列是查询条件列,并且可设置这些查询条件列的输入方式:输入框、日期选择、下拉选择,还是参照弹出式窗口,当设置好这些查询条件列,再由平台的生成页面功能重新生成一次页面就可以了,完全不需要开发人员参与修改代码。
这无疑在项目开发中大大节省了开发成本。
操作过程:
图2-11 查询条件列设置
我们可以以应聘简历信息表为例,设置学历,应聘人员姓名、出生日期、empTest1测试字段为查询条件列(是否查询条件列选择“是”),并分别设置学历字段的数据字典类型,出生日期的页面输入方式为“日期选择器”,empTest1测试字段的弹出窗口选择一个进行测试,设置完成后保存,然后进入图2-4功能定义,选择hr_resume对应的行,点“生成代码”,完成编译。访问:http://localhost:8088/crm/hr/listHrResume.action,显示生成的页面见下图:
图2-12 动态设置查询条件列
从上图看出,查询条件有文本输入框、下拉选择、日期选择、参照弹出窗口四种方式,这几个查询条件列可组合查询,没输入的不作为查询条件列。并且查询完成后,查询字段带有记忆功能,可显示查询前的条件。如果需要增加和删除查询条件列,可重新设置字段属性并重新在功能定义页面中点“生成代码”即可。由此可见,当用户需要更改页面上的查询条件列时,不再需要求助于软件开发人员了。下面是生成的页面中动态生成的查询条件列的部分代码:
查询条件输入框(动态生成):
<td>应聘人员姓名 <input type="text" name="queryCol1" value="${queryCol1}" style="width:100"/>
学历 <%=DropdownListBoxUtil.getList("queryCol2","IDBSupportService3","HR_XUELI","${currUser}","zh-CN","","${queryCol2}") %>
出生日期 <input type="text" name="queryCol3" class="wDate" onfocus="new WdatePicker(this)" value="${queryCol3}" style="width:100"/>
ewwe <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> </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();
}