昨天把表单定义的映射文件做完了,今天依然是相当重要的,做的是单向表单实例映射,首先表单实例映射文件。
难点1是map的配置:
<map
name="propertyMap"
table="itcast_formInstance_propertyMap">
<key
column="formInstanceId"></key>
<map-key
type="string"
column="name"></map-key>
<element
type="serializable"
column="value"></element>
</map>
为什么要实现serializable,所有的数据都是以二进制形式存在,所有的对象理论上都可以序列化,但是有些对象序列
化后会产生比如逻辑等等问题。在这里我们希望服务器重启后,仍然保存有我想要的对象,也就是可以把原来的对象拿出来!就要实现序列化 ,同学的序列化解释:
我们有时候将一个java对象变成字节流的形式传出去或者从一个字节流中恢复成一个java对象,例如,要将java对象存储到硬盘或者传送给网络上
的其他计算机,这个过程我们可以自己写代码去把一个java对象变成某个格式的字节流再传
输,但是,jre本身就提供了这种支持,我们可以调用OutputStream的writeObject方法来做,如果要让java帮我们做,要传输的对象必须实现serializable接口,这样,javac编译时就会特殊处理。
2是定义FormDefinitionActionForm。由于表单字段可以增加,如图:
我们用两个数组存放
private String
propertyNameList = {};
private Class[] propertyValueTypeList
= {};
3.那我们就在FormDefinitionAction中
可以这样处理:
//
actionForm
--> formDefinition
//
1,
copy properties
BeanUtils.copyProperties(formDefinition,
actionForm);
//
2,
fieldDefinitionList
for
(int
i = 0; i < actionForm.getPropertyNameList().length; i++) {
String
name = actionForm.getPropertyNameList()[i];
if
(name != null && name.trim().length() > 0) { // 有效的字段说明
Class
valueType = actionForm.getPropertyValueTypeList()[i];
formDefinition.getFieldDefinitionList().put(name,
valueType);
}
}
//
Save
formDefinitionService.save(formDefinition);
return
mapping.findForward("toList");)
小难点3.要把不同的表单定义名称显示到页面
用Sql语句:select distinct
pd.name ProcessDefinition的全类名pd
小难点4.页面设计
难点5.审批信息内容:谁 在 什么时间
对哪个表单 做了什么样的审批
难点6.整个实体类图及关联
最重要的还是下图的关系:要理解好
总之,今天下午听的晕乎晕乎的,趁过年还得好好复习一下!
posted on 2010-02-09 00:12
d66380022 阅读(120)
评论(0) 编辑 收藏