1.先看下面代码
/**
  * 达到注册页面
  * 跳过校验
  */
 @SkipValidation
 public String toRegPage(){
  return "regPage" ;
 }
 
 public String doReg(){
  model.setPassword(DataUtil.md5(model.getPassword()));
  us.saveEntity(model);
  return SUCCESS;
 }
 public void validate(){
  //1.非空
  if(!ValidateUtil.isValid(model.getEmail())){
   this.addFieldError("email", "email是必填项");
  }
  if(!ValidateUtil.isValid(model.getPassword())){
   this.addFieldError("password", "pass是必填项");
  }
  if(!ValidateUtil.isValid(model.getNickName())){
   this.addFieldError("nickName", "nickname是必填项");
  }
  if(hasErrors()){
   return ;
  }
  //密码一致性校验
  if(!model.getPassword().equals(confirmPassword)){
   addFieldError("password", "密码不一致");
   return ;
  }
  //邮箱是否占用校验
  boolean b = us.isRegisted(model.getEmail());
  if(b){
   addFieldError("email", "邮箱占用");
  }
 }
}
也就是说在struts2中,如果在action中,有名为validate的方法,那么在执行其他所有方法前,都会先执行这个validate方法【不用调用即会执行】,除非你在方法前加了注解 @SkipValidation。
【上面validate方法中,只要有异常的,就addFieldError()了(action要继承ActionSupport),然后只需要判断是否hasErrors()即可知道验证是否通过】
 
2.如果我们只想在method1方法前验证,那么我们可以写一个方法,validateMethod1【M大写】