struts2对Action中所有方法进行输入校验(手工编写代码)

来源:互联网 发布:淘宝信用值达到多少 编辑:程序博客网 时间:2024/06/06 03:07

Struts2 中validate方法会校验action里面所有的方法,当某个数据校验失败时,应该调用addFiledError(String fieldName,errorMessage)方法添加校验失败信息,Struts2会将请求发送到名为input的result,在input视图中,可以用用<s:filederror />显示失败信息。

其实现原理大致如下:

1.Struts2类型转换器将去参数进行类型转换,通过反射技术将转换后的参数赋值给对应属性。

2.在执行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext,conversionError拦截器将异常信息添加到filedErrors里。

3.Struts2通过反射调用action中的xxx()方法,在调用validate()重写的方法,将异常信息添加到addFieldError中。

        4.若filedErrors存在错误信息(即存放错误信息的集合的size>0),则将请求转发到名称为input的视图。若无错误信息,则将执行处理方法。


action 代码块如下:

         XxxAction extends ActionSupport

@Override
public void validate() {
if(this.userName == null || "".equals(this.userName)){
this.addFieldError("userName", "不能为空");
}
if(this.mobile == null || "".equals(this.mobile)){
this.addFieldError("mobile", "不能为空");
}else if(!Pattern.compile("^1[345678]\\d{9}$").matcher(mobile).matches()){
this.addFieldError("mobile", "手机号格式不正确");
}
super.validate();
}

配置视图:

<result name="message">/WEB-INF/page/message.jsp</result>

     页面获取错误信息:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
  <%@ taglib uri="/struts-tags" prefix="s" %>   

   ...........

    <s:fielderror></s:fielderror>

..........

1 0
原创粉丝点击