struts2数据校验方法

对于输入校验 struts2提供了2中实现方法。

 首先普及一下知识:

输入校验的流程:

1.类型转换器对请求参数执行类型转换,并把转换后的值赋给action中的属性。

2.如果在执行类型转换的过程中出现异常,系统会将异常信息保存到ActionContextconversionError拦截器将异常信息添加到fieldErrors里。不管类型转换是否出现异常,都会进入第3部。

3.系统通过反射技术先调用action中的validateXxx()方法,Xxx为方法名。

4.在调用action中的validate()方法。

5.经过上面4步,如果系统中的fieldErrors存在错误信息(即存放错误信息的集合的size大于0),系统自动将请求转发至名称为input的视图。如果系统中的fieldErrors没有任何错误信息,系统将执行action中的处理方法。

 

一、采用手工编写代码实现。

        通过重写validate()方法实现,validate()方法会校验action中所有与execute方法签名相同的方法。当某个数据校验失败时,调用addFileldError()方法往系统的fileldError添加检验失败信息(为了使用addFiledError()方法,action必须继承ActionSupport),如果系统的fileldError包含失败信息,struts2会将请求转发到名为inputresult。在input视图中可以通过<s:fielderror/>显示失败信息。

(1) 对所有方法进行校验:

public void validate)(){

    if(this.phone==null||””.equals(this.phone.trim()))

   {

          this.addFieldError( “username”,”手机号不能为空!”);

      }

}else{

   if(!Pattern.compile(“^1[358]\\d{9}”).matches(this.phone.trim()).matches())

   {

      this.addFieldError(phone”,”手机号的格式不正确”);}

   }

}


(2) 对特定方法校验:

      通过重写validateXxx()方法实现,validateXxx()方法只会校验actionXxx方法。(注意Xxx的第一个字母要大写。)同上

public void validateLogin(){

  If(name==null||””.equals(name.trim()))

     this.addFieldError(“name”,”用户名不能为空!”);

}


验证失败后,请求转发至input视图:

<result name=”input”>/WEB-INF/page/login.jsp</result>

login.jsp页面中使用<s:fielderror/>显示失败信息。

 


二、基于XML配置方式的实现。

       使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和acton类放在同一个包下,文件的取名格式为:ActionClassName-validation.xml,注意:ActionClassNameaction的简单类名,-validation为固定写法,例如:Action类为cn.com.AdmAction.那么该文件的取名应为:AdmAction-validation.xml

举例说明一下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC

        "-//Apache Struts//XWork Validator 1.0.3//EN"

        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

<validators>

   <!--validator声明required验证器,属性type指示了验证器的类型,参数fieldName指示了所有验证的Action属性,子元素message给出了验证失败时的错误信息。——>

   <validator type=”required”>

       <param name=”fieldName”>title</param>

       <message>留言主题不能为空!</message>

   </validator>

<!--field声明required验证器,属性name指示了所要验证的Acton属性,子元素field-validator的属性type指示了验证器的类型,子元素message给出了验证失败时的错误信息-->

   <field name=”title”>

      <field-validator type=”required”>

           <message>留言主题不能为空值!</message>

      </field-validator>

   </field>

</validators>

 

       校验器的定义可以在xwork-2.x.jar中的com.opensymphony-xwork2.validator.validators下的default.xml中找到


常用的校验器举例:

required必填校验器

requireding:必填字符串校验器

(其中:required 和requireding 校验器的区别在于:required要求的是一个对象不能为null,它可以验证像Date类型的对象,而requiredstring只是对字符串做限制)

stringlength :字符串长度校验器

<field-validator type=”stringlength ”>

<param name=”maxLength”>18</param><!--对最大长度进行校验-->

<param name=”minLength”>6</param><!--对最小长度进行校验-->

<param name=”trim”>true</param>

<message><![CDATA[输入的长度应在6-18个字符之间!]]></message>

</field-validator>

 

regex  :正则表达式校验器(其中expression参数指定正则表达式,caseSensitive参数指定进行正则表达式匹配时,是否区分大小写,默认值为true

<field-validator type=”regex”>

<param name=”expression”><![CDATA[^1[358]\d{9}$]]></param>

<message>不是正确的手机号格式!</message>

</field-validator>

int :整数校验器

url :网址校验器

date :日期校验器

email : 邮件地址校验器


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值