对action的方法进行校验

1.对Action中所有方法进行输入校验
举个例子对用户名和手机号码进行输入校验
a.<%@ taglib uri="/struts-tags" prefix="s" %> 
<s:fielderror/> //显示错误信息
    <form action="${pageContext.request.contextPath}/命名空间/action名称_需校验的方

法.action" method="post">
     姓名:<input type="text" name="username"><br/>
     手机号:<input type="text" name="mobile"><br/>
     <input type="submit" value="提交">
    </form>
b.新建一校验类并继承类ActionSupport,并重写validate()方法,它会校验action中所有与execute方法

签名相同的方法,当某个数据校验失败时,我们应该调用addFieldError()方法,如果系统的fieldErrors

包含失败信息,struts2会将请求转发到名为input的result,在input视图中可以通过<s:fielderror/>显

示错误信息
validate方法例子
 public void validate() {
  if(this.username == null || "".equals(this.username.trim())) {
   this.addFieldError("username", "用户名不能为空");
  }if(this.mobile == null || "".equals(this.mobile.trim())) {
   this.addFieldError("mobile", "手机号不能为空");
  }else {
   if(!Pattern.compile("^1[358]//d{9}$").matcher(this.mobile).matches

()) {
    this.addFieldError("mobile", "手机号格式不正常");
   }
  }
 }
其中Pattern为正则表达式类,^1[358]//d{9}$表示的含义为输入的手机号码必须1为第一位,第二位是

3,5,8其中一位,后面还应该有9位
c.如果只需对Action中某一个方法进行校验,举个例子如果对add()方法进行校验只需将validate()改为

validateAdd()则可实现指定校验

2.采用手工编写代码实现输入校验流程
a.类型转换器对请求参数执行类型转换,并把转换后的值赋给action的属性
b.如果在执行类型转换过程中出现异常,系统将异常信息保存到ActionContext,conversionError拦截器

将异常信息封装到fieldErrors里,不管类型转换出现异常,都会进入第三步
c.系统通过反射技术先调用action中的validateXxx()方法,Xxx为方法名
d.再调用action中的validate()方法
e.经过以上四步,如果系统中的fileErrors存在错误信息,系统自动将请求发送到名称为input的视图,

如果系统中的fileErrors不存在错误信息,系统将执行action的处理方法

3.进入input视图可能是因为类型转换失败或者是校验失败

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值