Struts2的方法验证

来源:互联网 发布:pages for windows 编辑:程序博客网 时间:2024/04/30 22:31

struts2可以对anction中所有方法进行校验,也可以对指定方法进行校验,现在我们来说说采用手工编码代码方式来进行校验

1 编写action,重写validate方法,validate会校验所有的方法,当校验出错,把错误信息放到filedError中。

  

public class PersonAction extends ActionSupport {

 

private String userName;
public String getUserName() {
 return userName;
}

 

public void setUserName(String userName) {
 this.userName = userName;
}


@Override //校验所有方法
 public void validate() {
     System.out.println("validate");
     if(userName==null||"".equals(userName.trim())){
      this.addFieldError("userName" , "用户名不能为空");
     }
 
 }

//校验update方法

public void validateUpdate(){
 System.out.println("validateUpdate");
   if(userName==null||"".equals(userName.trim())){
           this.addFieldError("userName" , "用户名不能为空");
      }
 
}
 
public void  update(){
 System.out.println("update");
  
 ActionContext.getContext().put("message","update");
}

 

@Override
public String execute() throws Exception {
  System.out.println("execute");
  return  this.SUCCESS;
}

}
 

2 当在页面输入用户名,会经过先经过validate方法校验,校验通过才会进入execute方法,记住校验失败把错误信息放入到addFieldError方法中,才不会继续执行下去,validate会校验所有方法。

  

3 如果要校验部分方法,则校验方法名称就不是validate,而是validateXxx,Xxx是actiion中的方法名.如果两个都有则是先校验部分方法,再校验所有方法。校验失败,struts2就会将请求转发到名为input的result中去。<s:fielderror/>会输出存入的校验失败信息

 

输入校验流程

1 类型转换器对请求参数执行类型转换,并把转换后的值复制给action属性

2 如果在执行类型转换过程中出现异常,系统将异常信息保存到ActionContext中,拦截器将异常信息添加到filedErrors里,不管类型转换是否出现异常,都进入步骤3

3 调用validateXxx方法,部分方法校验

4 调用 validate方法,全部方法校验

5 经过以上,如果filedErrors存在错误信息,转发input的result,如果没有就执行action中的方法

 

 

 

 

 

 

 

0 0
原创粉丝点击