随笔-54  评论-0  文章-2  trackbacks-0

     昨天把表单定义的映射文件做完了,今天依然是相当重要的,做的是单向表单实例映射,首先表单实例映射文件。

难点1map的配置:

<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本身就提供了这种支持,我们可以调用OutputStreamwriteObject方法来做,如果要让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 阅读(113) 评论(0)  编辑  收藏