Struts2几个常见的验证器

一.我们可以把验证器分为两类:
1.字段验证器
2.动作验证器

但无论是那种验证器,我们都应该考虑以下问题:
1.验证谁?
2.使用什么条件验证
3.不满足条件时在那个页面的那个位置显示什么结果

一.字段验证器
字段验证器用来验证提交的表单内的单个字段,上一篇的例子就是。
下面我们来看下验证文件的构造:

<?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>
  <field name="user.age">
   <field-validator type="int">
    <param name="min">18</param>
     <message>年龄必须在18岁以上</message>
     </field-validator>
  </field>
</validators>

其中:
1.< validators>元素作为整个验证文件的根元素。
2.< field>就是字段验证器,它的name属性就是要验证的字段。
3.一个< field>元素可以有多个< field-validator>元素,它是对这个字段的一种验证条件,它的type属性就是具体的验证器。
4.我们还可以给< field-validator>元素添加< param>子元素来设置验证条件的参数。
5.添加< message>子元素来设置验证错误时返回的信息。

除了上面的写法,还有一种写法:

<?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 type="int">
    <param name="fieldName">user.age</param>
    <param name="min">18</param>
     <message>年龄必须在18岁以上</message>
  </validator>
</validators>

其中关键元素的意思和上面一样。

二.动作验证器
动作验证器应用于整个动作,一般用于验证提交的表单内的多个字段的关系,也可以验证单个字段。
例子:

<validator type="expression">
 <param name="expression"><![CDATA[user.age>=user.account]]</param>
 <message>年龄必须在${user.account}岁以上</message>
 </validator>

< validator>其type属性为expression,引用了内置的表达式验证器,这个验证器需要一个name属性为expression的< param>子元素为其指定表达式。

其它同上。

对于动作验证器,它返回的错误消息不会直接显示在< s:textfield name=“user.age”/>对应的文本框上方,而是需要用< s:actionerror/>标签去引用。

二.Struts2内建验证器
Struts2的验证框架已经为用户建立了足够多的内建验证器,以满足不同的验证需求。

1.类型转换错误验证器(conversion)
conversion验证器用来验证类型转换时是否出错。

2.整数验证器(int)
用来验证一个整型参数是否在指定范围内。
它有两个参数:min,max分别指定最小最大值。

3.短整数验证器(short)和长整数验证器(long)
同上。

4.日期验证器(date)
用来验证一个日期类型参数是否在指定范围内。
同样有:min,max

5.双精度浮点验证器(double)
用来验证一个双精度浮点型参数是否在指定范围里。
有四个参数:
minInclusive 包含给定值
maxInclusive 包含给定值
minExclusive 不包含给定值
maxExclusive 不包含给定值

6.邮件验证器(E-mail)
用来验证一个参数是否为邮箱地址。

7.URL验证器(url)
用来验证一个参数是否为合法URL。

8.必填验证器(required)
用来验证一个参数是否不为空。

9.必填字符串验证器(requiredstring)
用来验证一个字符串参数是否非空。
参数:trim :是否去掉字符串两边的空白,默认为true

10.字符串长度验证器(stringlength)
用来验证一个字符串的长度是否在指定范围内。
参数:
maxLength 字符串长度最大值
minLength 字符串长度最小值
trim 是否去掉字符串两边的空白,默认为true

11.正则表达式验证器(regex)
验证一个字符串是否符合一个正则表达式要求。
参数:
expression 正则表达式
caseSensitive 是否检查大小写
trim 是否去掉字符串两边的空白,默认为true

12.字段表达式验证器(fieldexpression)和表达式验证器(expression)
两者验证器中必须指定一个返回boolean值的ognl表达式,根据这个表达式的值来判断是否符合条件。
参数:expression 返回boolean值的OGNL表达式,可以在这个OGNL表达式中访问当前值栈。

但后者只能用于动作验证器。

13.访问者验证器(visitor)
用于验证Action中的复合属性,可以直接把验证信息放到域对象中去注册,这样就使得同包内的不同Action在验证同一个域对象时,不用注册重复的验证信息。
参数:
context: 引用的域对象验证信息上下文名。
appendPrefix: 是否在错误信息中添加< message>元素指定的前缀。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小牧之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值