Chinaunix首页 | 论坛 | 博客
  • 博客访问: 499306
  • 博文数量: 1496
  • 博客积分: 79800
  • 博客等级: 大将
  • 技术积分: 9940
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 13:22
文章分类

全部博文(1496)

文章存档

2011年(1)

2008年(1495)

我的朋友

分类:

2008-09-09 17:23:00

    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]  

【责编:landy】

--------------------next---------------------

阅读(140) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~