分类:
2008-09-08 18:23:14
WebWork中可以使用两种方式实现数据保存之前的校验,一种方式是针对每个action写一个校验的xml配置文件,例如对于BaseAction.java,就要在同目录下建立一个BaseAction-validation.xml,另外一种方式就是BaseAction实现Validateable接口,在validate方法中使用addFieldError(fieldName,message);构造字段-错误信息对照.
使用xml的方式有个问题就是:如果更改或添加校验规则需要重新装载部署xml文件,另外还有一个问题,OpenJWeb的BaseAction是一个处理所有实体类的action,换句话说,BaseAction是一个通用的,不是针对具体实体类的action(BaseAction中的增删改查相关方法的参数都是抽象实体类),,所以不适合将不同表字段的校验配置写到同一个BaseAction-validation.xml中,第二种方案是更好的选择,下面介绍实现方式:
BaseAction中的validate的方法中的代码片段:
list = CommonValidate.validate(this.container.getEntity(this.entityClassName),this.operate);
if(list!=null&& list.size()>0)
{
String fieldName = ((LabelValueBean)list.get(0)).getValue();
String message = ((LabelValueBean)list.get(0)).getLabel();
addFieldError(fieldName,message);
//返回输入页面的时候填充下拉列表字段
map = JspBuffer.getListMaps(this.entityClassName, true, request);
request.setAttribute("map",map);
}
CommonValidate类是读取当前实体类的字段配置信息,也就是从字段基本信息表eas_meta_column中遍历字段,
因为这个表中有是否可空,是否唯一的配置,所以当比较当前实体类当前字段如果不符合eas_meta_column中定义的
[1]