模块的记录新增(一)
视频讲解在线观看:视频讲解链接 http://i.youku.com/jfok1972
经过了前面的过程,一个模块的grid与form已经设计完成,现在是要加入数据的时候了。对于一个完全靠解释配置文件执行的系统,对数据的查询和新增,修改,删除也必须作到。幸好java中提供了反射的功能,使对于动态的数据能够保存进bean中。
下面看一下我这系统中新增一条记录的流程。
(图随便画的,大家凑合着看吧。实际新增的过程还要复杂,还有一些步骤没有加入。)
在加入缺省值的时候,4个步骤是顺序执行,最后一步将前三步已经设置的缺省值发到后台取得最终的缺省值。
整个新增处理的核心重点是要根据模块的名称,自动找到相应的hibernate bean,然后反射注入字段值。然后要根据spring的配置找到模块的逻辑处理Logic程序,如果有的话就去执行相应的beforeInsert和afterInsert的函数。由于是解释执行,所有模块的数据的新增都是统一处理的。
下面的代码是一个模块记录操作处理的接口,任何有需求的模块,只要
implements此interface即可。
package com.jfok.server.logic;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.jfok.shared.module.ModuleFormOperateType;
import com.jfok.shared.module.grid.GridFilterData;
/**
* 每一个模块的新增,修改,删队的处理逻辑
*
* @author jfok 2012.11.14
*
*/
public interface IModuleOperateLogic<T> {
/**
* 记录插入之前的操作
*
* @param inserted
* 要被插入的 hibernate bean
* @param errorMessage
* 如果不能插入,存放发生错误的字段和错误原因
* @param request
* @return true 表示可以插入,false 表示不可以插入
*/
public boolean beforeInsert(T inserted, Map<String, String> errorMessage,
HttpServletRequest request);
public boolean afterInsert(T inserted, HttpServletRequest request);
/**
* 记录修改之前的操作
*
* @param type
* 修改的类型,有修改,或者审批,审核等
* @param updatedObject
* 记录修改后的bean
* @param oldObject
* 记录修改前的bean
* @param errorMessage
* 如果不能修改,存放发生错误的字段和错误原因
* @param request
* @return 表示可以修改,false 表示不可以修改
*/
public boolean beforeUpdate(ModuleFormOperateType type, T updatedObject, T oldObject,
Map<String, String> errorMessage, HttpServletRequest request);
public boolean afterUpdate(ModuleFormOperateType type, T updatedObject, T oldObject,
HttpServletRequest request);
public boolean beforeDelete(T deleted, List<String> errorMessage, HttpServletRequest request);
public boolean afterDelete(T deleted, HttpServletRequest request);
/**
* 取得记录的缺省值
* @param request
* @param gridFilterData 前台传过来的参数
* @return 缺省值字段名和字段值的集合
*/
public Map<String, Object> getNewDefultValue(HttpServletRequest request,
GridFilterData gridFilterData);
}
下面看一下新增的界面,和新增后的结果
至此第一种新增方式成功了。