struts2的编程式的非空验证

1.首先有一个Action类,如下:

public class RegAction extends ActionSupport {

 private static final long serialVersionUID = 7198855508667163247L;

 private String name;

 public String getName() {   return name;  }

 public void setName(String name) {   this.name = name;  }

 

   public String toReg() {  

     System.out.println("toReg");  

     return "toReg";  

   }

       public String reg() {  

     System.out.println("reg");  

     return "reg";  

   }

 public void validate() {  

   if(this.name == null || this.name.trim().length() == 0){   

     this.addFieldError("message", "必选项");   

   }   super.validate();  

 }

}

如果这样写的话,validate方法会对以上的toReg() 和reg()都进行验证,

指定针对某个方法进行验证的方法有3中:

  1. 在不进行校验的方法上加上注解 : @SkipValidation,这样这个方法就不会进行校验了

    eg: 如下就不会对toReg方法进行验证

    @SkipValidation

    public String toReg() {
        System.out.println("toReg");
        return "toReg";
      }

  2. 把validate方法后面加上要验证的方法名字,注意验证的方法名字首字母要大写: validateReg ,或者validateDoReg,这样就只会对reg方法进行验证

  eg: 如下只会对reg方法进行验证

  public void validateReg() {
    if(this.name == null || this.name.trim().length() == 0){
       this.addFieldError("message", "必选项");
    }
      super.validate();
   }

  3. 在struts.xml文件中覆盖默认栈(defaultStack)中的validation中的excludeMethods属性,把不需要验证的方法写到<params></params>中,这样的话就不会对标签<params>中的方法进行验证了.

  eg:<interceptor-ref name="defaultStack">
        <param name="validation.excludeMethods">input,back,cancel,browse,toReg</param>
     </interceptor-ref>

posted @ 2013-04-16 10:19  李亚杰  阅读(376)  评论(0编辑  收藏  举报