struts2输入校验

 

struts2 我们可以实现对 action 的 所有方法 进行校验 或者对 action 的 指定方法 进行校验。
对于输入校验 struts2 提供了两种实现方法 :
1. 采用手工编写代码实现。
2. 基于 XML 配置方式实现。
 
手工编写代码实现对action中所有方法输入校验
 
通过重写 validate() 方法实现, validate() 方法会校验 action 中所有与 execute 方法签名相同的方法。当某个数据校 验失败时,我们应该调用 addFieldError() 方法往系统的 fieldErrors 添加校验失败信息(为了使用 addFieldError() 方 法, action 可以继承 ActionSupport ),如果系统的 fieldErrors 包含失败信息, struts2 会将请求转发到名为 inputresult 。在 input 视图中可以通过 <s:fielderror/> 显示失败信息。
validate() 使用例子:
public void validate () {
       if(this.mobile==null || "".equals(this.mobile.trim())){  this.addFieldError("username", " 手机号不能为空 ");
        }else{  if(!Pattern.compile("^1[358]\\d{9}").matcher(this.mobile.trim()).matches()){
this.addFieldError(“mobile", " 手机号的格式不正确 "); }
       }
}
验证失败后,请求转发至 input 视图:
<result name=" input ">/WEB-INF/page/addUser.jsp</result>
addUser.jsp 页面中使用 <s:fielderror/> 显示失败信息。
 
手工编写代码实现对action指定方法输入校验
 
通过 validateXxx() 方法实现, validateXxx() 只会校验 action 中方法名为 Xxx 的方法。其中 Xxx 的第一个字母要大写。 当某个数据校验失败时,我们应该调用 addFieldError() 方法往系统的 fieldErrors 添加校验失败信息(为了使用 addFieldError() 方法, action 可以继承 ActionSupport ),如果系统的 fieldErrors 包含失败信息, struts2 会将请求 转发到名为 inputresult 。在 input 视图中可以通过 <s:fielderror/> 显示失败信息。
validateXxx() 方法使用例子:
public String add () throws Exception{  return "success";}
public void validateAdd (){
          if(username==null && "".equals(username.trim()))  this.addFieldError("username", " 用户名不能为空 ");
}
验证失败后,请求转发至 input 视图:
<result name=" input ">/WEB-INF/page/addUser.jsp</result>
addUser.jsp 页面中使用 <s:fielderror/> 显示失败信息。
 
输入校验的流程
 
1 类型转换器对请求参数执行类型转换,并把转换后的值赋给 action 中的属性。
2 如果在执行类型转换的过程中出现异常,系统会将异常信息保存到 ActionContextconversionError 拦截器将异常信息添加到 fieldErrors 里。不管类型转换是否出现异常, 都会进入第 3 步。
3 。系统通过反射技术先调用 action 中的 validateXxx() 方法, Xxx 为方法名。
4 。再调用 action 中的 validate() 方法。
5 经过上面 4 步,如果系统中的 fieldErrors 存在错误信息(即存放错误信息的集合的 size 大于 0) ,系统自动将请求转发至名称为 input 的视图。如果系统中的 fieldErrors 没有任 何错误信息,系统将执行 action 中的处理方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值