Struts2输入校验

(1)通过继承ActionSupport然后重写validate()方法,对action里面的所有方法进行验证,在验证不通过的时候会转发到input指向的视图,在validate方法里面可以通过this.addFieldError这个方法向页面发送错误信息,然后在页面通过用struts2的标签<s:fielderror/>来获取错误信息提示

(2)如果要使用validate()来对指定方法进行校验,则可以通过validateXxx()方法进行处理,Xxx为对应的action方法,不过该方法首字母需要大写

(3)输入校验流程:
a.类型转换器对请求参数执行类型转换,并把转换后的值赋给aciton里面的属性。
b.如果在执行类型转换的过程中出现异常,系统会把异常信息保存到ActionContext,conversionError拦截器将异常信息添加到fieldError里,不管转换类型是否出现异常,都会进入第三步
c.系统通过反射技术先调用action的validateXxx()方法
d.再调用action中的validate()方法
e.经过上面4步,如果系统中的fieldError存在错误信息(既存放错误信息的集合的size大于0),系统自动将请求转发给名称为input的视图,如果系统中的fieldError没有任何错误信息,系统将执行action里面方法

(4)通过使用xml对action进行校验,action也需要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一个包下,文件取名为:ActionClassName-validation.xml,其中ActionClassName为action的简单类名,-validation为固定写法

XML校验器的模版代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<validators>
<field name="">
<field-validator type="">
<param></param>
<message></message>
</field-validator>
</field>
</validators>

<field>指定action中要校验的属性,<field-validator>指定校验器,<message>为校验失败后的提示信息,如果需要国际化,可以为message指定key属性,key的值为资源文件的key。
系统提供了能满足大部分验证需求的校验器,这些校验器的定义可以在xwork-2.x.jar中的com.opensymphony.xwork2.validator.validators下面的dafault.xml里面找到

(5)系统提供的校验器
a. required 必填校验器,要求field的值不能为null
b. requiredstring 必填字符串校验器,要求field的值不能为null,并且长度大于0,默认情况下会对字符串去掉前后空格trim
c. stringlength 字符串长度校验器,要求field的值必须在指定范围内,否则校验失败,minLength参数指定最小长度,maxLength参数指定最大长度,trim参数指定校验field之前是否取出字符串前后的空格
d. regex 正则表达式校验器,检查被校验的field是否匹配一个正则表达式,expression参数制定正则表达式,caseSensitive参数指定进行正则表达式匹配时,是否区分大小写,默认值为true
e. int 整数校验器,要求field的整数值必须在指定范围内,min指定最小值,max指定最大值
f. double 双精度浮点数校验器,要求field的双精度浮点数必须在指定范围内,min指定最小值,max指定最大值
g. fieldexpression 字段OGNL表达式校验器,要求field满足一个ognl表达式,expression参数指定ognl表达式
h. email 邮件地址校验器,要求如果field的值非空,则必须是合法的邮件地址
i. url 网址校验器,要求如果field的值非空,则必须是合法的url地址
j. date 日期校验器,要求field的日期值必须在指定范围内,min指定最小值
k. conversion 转换校验器,指定在类型转换失败时,提示的错误信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值