CZTZ-JavaEE开源应用开发平台介绍(3)
第二部分 平台开发示例(下)
王保政
QQ:29803446
上篇文章介绍了如何通过平台方便地搭建了一个列表页面,现在介绍如何为网站用户增加一个新增和修改的页面(新增和修改页面是同一个页面)。
在module/platform目录下找到editEasMetaColumn.jsp,更名为editEasB2cuser.jsp(注意文件名是要区分大小写的)。
更改前的JSP代码:
<%@ include file="/common/head.jsp"%>
<%@ page contentType="text/html; charset=GBK"%>
<style type="text/css">
<!--
.STYLE1 {color: #FFFFFF}
.STYLE3 {
color: #FF0000;
font-weight: bold;
}
.STYLE4 {color: #FF0000}
.STYLE5 {font-size: 10px}
-->
</style>
<script>
<!--
function returnBack()
{
document.editForm.operate.value="selectPageList";
document.editForm.submit();
}
function update()
{
document.editForm.operate.value="update";
document.editForm.submit();
}
//-->
</script>
<table class="all" align="center" >
<%=JspBuffer.titleBart(new String[]{"平台","元数据","字段基本信息维护"})%>
<tr class="allcontent"><td class="allcontent">
<ww:form action="listEasMetaColumn" name="editForm">
<input type="hidden" name="operate">
<table border="0" align="center" cellpadding="2" cellspacing="0" class="add">
<tr class="add_title">
<td nowrap class="add_title" colspan="4" height="25">字段基本信息维护</td>
</tr>
<ww:select label="表名" name="container.easMetaColumn.tableName" list="#request['map'].tableName" listKey="value" listValue="label" emptyOption="true" />
<ww:textfield label="字段名" name="container.easMetaColumn.columnName" readonly="%{editDisabled}" />
<ww:textfield label="字段中文名" name="container.easMetaColumn.columnCnName" />
<ww:textfield label="类属性名" name="container.easMetaColumn.classFieldName" size="50" />
<ww:select label="字段基本类型" name="container.easMetaColumn.columnType" list="#request['map'].columnType" listKey="value" listValue="label" emptyOption="true"/>
<ww:select label="取值范围" name="container.easMetaColumn.valueRange" list="#request['map'].valueRange" listKey="value" listValue="label" emptyOption="true" />
<ww:select label="数据字典类型" name="container.easMetaColumn.dataTypeCode" list="#request['map'].dataTypeCode" listKey="value" listValue="label" emptyOption="true" />
<ww:textfield label="列表页代码名称SQL" name="container.easMetaColumn.valueSql" size="60" />
<ww:textfield label="代码表名值对SQL" name="container.easMetaColumn.valueSql1" size="60" />
<ww:textfield label="列标题文字" name="container.easMetaColumn.formColTitle" />
<ww:textfield label="字段长度" name="container.easMetaColumn.columnLen" />
<ww:textfield label="小数位数" name="container.easMetaColumn.columnDigitLen" />
<ww:checkbox label="是否查询条件列" name="container.easMetaColumn.isQueryCol" fieldValue="true" />
<ww:checkbox label="是否在列表页面展示" name="container.easMetaColumn.isListShow" fieldValue="true" />
<ww:checkbox label="是否在编辑页面展示" name="container.easMetaColumn.isEditShow" fieldValue="true" />
<ww:checkbox label="是否可空" name="container.easMetaColumn.isNull" fieldValue="true" />
<ww:checkbox label="是否自增长列" name="container.easMetaColumn.isSerialCol" fieldValue="true" />
<ww:hidden name="container.easMetaColumn.objId" />
<ww:hidden name="container.easMetaColumn.rowId" />
<ww:hidden name="container.easMetaColumn.createDt" />
<ww:hidden name="container.easMetaColumn.updateDt" />
<ww:hidden name="container.easMetaColumn.createUid" />
<ww:hidden name="container.easMetaColumn.updateUid" />
</table>
<br>
<table class="resbutton" width="100%" height="100%">
<tr><td align="left">
<input type="button" name="btnSave" value="保存" class="mybutton" onClick="update()">
<input type="button" name="btnReturn" value="返回" class="mybutton" onClick="returnBack()">
</td></tr>
</table>
</ww:form>
</tr></td></table>
<%@include file="/common/tail.jsp"%>
首先更改功能导航条文字"平台","元数据","字段基本信息维护,你可以改成你希望显示的文字(这一步一点技术含量都没有)。
“字段信息维护”是功能标题,改为“网站用户基本信息维护”。上文的蓝字部分是要维护的字段。对于EasB2cuser类,每个字段的name的前缀必须是container.easB2cuser,然后后面是类字段名,例如用户名称为:container.easB2cuser.userName(类的字段名可参考org.apache.easframework..core.entity.EasB2cuser),对于下拉列表字段,按照以下格式书写:
<ww:select label="标签文字" name="container.easB2cuser.类字段名" list="#request['map'].类字段名" listKey="value" listValue="label" emptyOption="true" />,例如sysCode是应用系统字段名(类字段,不是数据库字段,数据库字段名是sys_code),见下文sysCode下拉列表的写法:
<ww:select label="所属系统" name="container.easB2cuser.sysCode" list="#request['map'].sysCode" listKey="value" listValue="label" emptyOption="true" />
使用本平台编写编辑页面时,所有的下拉列表字段不需要你自己去写取值的代码了,是不是感到开发起来很轻松?这就是平台的强大之处。我曾经和另一软件公司给同一客户做项目,看到他们的开发人员又是写SQL(每个功能模块都要写的),又是忙着写代码生成页面下拉列表,苦不堪言,真是于心不忍。为什么许多项目不能盈利呢?软件行业的恶性低价竞争固然是原因之一,还有很大一部分原因在于软件公司本身,他们只看到投入平台开发没有项目为开发成本买单,认为平台研发组(或部门)是成本中心,却没看到平台为项目节省的人员成本。就我目前花了一个多月时间开发的平台来说(还有绝大部分功能没开发),在百万元级的项目中,已经至少能为项目省下一个中级程序员1年的工资(大约五万),我做过一个测试,在没有平台支持的开发项目中,一个比较熟练的程序做一个功能要包括增删改查页面、分页实现,调试,写SQL等内容,至少需要两天的时间才能完成,新手就不提了。而用本平台开发呢?我大概20分钟按照这个建页面的流程能配置出一个功能页面,在模板生成器作好之后,所需时间会更短,而且模板生成的东西比手工做的页面肯定能减少许多BUG。
扯远了,对不起。
…
喝了杯咖啡的工夫把editE2buser.jsp改完了,见下面的JSP代码:
<%@ include file="/common/head.jsp"%>
<%@ page contentType="text/html; charset=GBK"%>
<style type="text/css">
<!--
.STYLE1 {color: #FFFFFF}
.STYLE3 {
color: #FF0000;
font-weight: bold;
}
.STYLE4 {color: #FF0000}
.STYLE5 {font-size: 10px}
-->
</style>
<script>
<!--
function returnBack()
{
document.editForm.operate.value="selectPageList";
document.editForm.submit();
}
function update()
{
document.editForm.operate.value="update";
document.editForm.submit();
}
//-->
</script>
<table class="all" align="center" >
<%=JspBuffer.titleBart(new String[]{"平台","权限管理","个人网站用户信息维护"})%>
<tr class="allcontent"><td class="allcontent">
<ww:form action="listEasB2cuser" name="editForm">
<input type="hidden" name="operate">
<table border="0" align="center" cellpadding="2" cellspacing="0" class="add">
<tr class="add_title">
<td nowrap class="add_title" colspan="4" height="25">个人网站用户信息维护</td>
</tr>
<ww:textfield label="登录帐号" name="container.easB2cuser.userId" />
<ww:textfield label="昵称" name="container.easB2cuser.userName" />
<ww:password label="口令" name="container.easB2cuser.userPassword" />
<ww:select label="用户类型" name="container.easB2cuser.userType" list="#request['map'].userType" listKey="value" listValue="label" emptyOption="true" />
<ww:select label="所属系统" name="container.easB2cuser.sysCode" list="#request['map'].sysCode" listKey="value" listValue="label" emptyOption="true" />
<ww:hidden name="container.easB2cuser.objId" />
<ww:hidden name="container.easB2cuser.rowId" />
<ww:hidden name="container.easB2cuser.createDt" />
<ww:hidden name="container.easB2cuser.updateDt" />
<ww:hidden name="container.easB2cuser.createUid" />
<ww:hidden name="container.easB2cuser.updateUid" />
</table>
<br>
<table class="resbutton" width="100%" height="100%">
<tr><td align="left">
<input type="button" name="btnSave" value="保存" class="mybutton" onClick="update()">
<input type="button" name="btnReturn" value="返回" class="mybutton" onClick="returnBack()">
</td></tr>
</table>
</ww:form>
</tr></td></table>
<%@include file="/common/tail.jsp"%>
注意上面的ww:hidden标签是隐藏的非空字段,如果是新记录,在保存前后台会自动赋值,一定要带上哦!否则会出错地!因为后台是要对前台页面传来的值保存到数据库,字段值如果为空,会被写到数据库,而且objId字段是非空的,总之,按照模板写就是了。objId,rowed,createDt,updateDt,createUid,updateUid都是EasB2cuser有的字段。
保存EasB2cuser.jsp后,点B
录点数据,保存,返回,看到列表页的数据没?没找到?翻翻页看看,或者输入查询条件检索之。然后玩玩修改和删除,在列表页选择刚才的那行,点修改,进入维护页面,界面也是上面的样子,改改字段内容再保存看看效果,然后选择这条记录删除。这样增删改查都实现了吧?!
总结一下,从配置列表页面到编辑页面,没有写一行java代码,只是从模板页面抄了一个列表页面和编辑页面就实现了增删改查的例子,你有没有觉得软件开发在平台的支持之下变得如此简单,有没有人埋怨这东西可能让程序员失去饭碗?答案是过虑了,他可以成为架构师啊!你有没有觉得这种平台会使不太懂得编程的业务人员可以利用此平台开发业务模块的诱惑力?如果你是一个还徘徊在IT行业门槛之外的人,想涉足IT行业,这种平台能否给你一个起点?至少你可以觉得自己一下子就能成为软件蓝领,不管怎么说,先跨进这个门槛吧。