struts2提供了大量的内置验证器,分别介绍如下
1.必填验证器
RequiredFieldvalidator验证器检查指定的字段是否为null。该验证器可以接受一个参数:fieldName,指定要验证的字段名,如果使用<field>元素来声明该字段验证器,则不需要这个参数。
采用非字段校验器的配置如下:
<!-- 使用type属性指定使用required验证器 -->
<validator type="required">
<!-- 通过fieldName参数指定需要验证的字段 -->
<param name="fieldName">user.username</param>
<message>请输入用户名!</message>
</validator>
采用字段验证器配置如下:
<!-- 采用字段验证器风格时 -->
<!-- 通过name来指定要验证的字段名 -->
<field name="user.username">
<!-- 使用type属性指定使用required验证器 -->
<field-validator type="required">
<message>请输入用户名!</message>
</field-validator>
</field>
2必填字符串验证器:
<!-- 必填字符串验证器 -->
<!-- 其中trim是指定在执行验证的时候,调用String的trim()方法删除首尾的空格 -->
<validator type="requiredstring">
<param name="fieldName">user.username</param>
<param name="trim">true</param>
<message>请输入用户名!</message>
</validator>
<!-- 采用字段校验器配置风格时 -->
<field name="user.username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>请输入用户名!</message>
</field-validator>
</field>
3.字符串长度验证器:
StringLengthFieldValidator验证器检查一个字符串字段值是否子啊一定的长度范围内。该验证器有四个参数:
fieldname:要验证的字段名
maxLength:指定字符值的最大长度
minLength:指定字段值的最小长度
trim指定是否执行String 的trim()方法去掉首尾空格
<!-- 字符串长度验证器 -->
<!-- 采用非字段校验器配置风格时 -->
<validator type="stringlength">
<param name="fieldName">user.username</param>
<param name="minLength">10</param>
<param name="maxLength">18</param>
<param name="trim">true</param>
<message>你输入的长度必须在${minLength}和${maxLength}之间</message>
</validator>
<!-- 采用字段校验器 -->
<field name="user.username">
<field-validator type="stringlength">
<param name="minLength">10</param>
<param name="maxLength">18</param>
<param name="trim">true</param>
<message>你输入的用户名长度必须在${minLength}和${maxLength}之间</message>
</field-validator>
</field>
4.整数验证器
IntRangeFieldValidator验证器检查指定的整数是否在一定的范围内。
有三个参数:
fieldName:要验证字段名
min:整数最小值
max:指定整数的最大值
<!-- 整数验证器 -->
<!-- 采用非字段验证器 -->
<validator type="int">
<param name="fieldName">user.age</param>
<param name="min">1</param>
<param name="max">10</param>
<message>你输入的年龄在${min}到${max}之间</message>
</validator>
<!-- 采用字段校验器 -->
<field name="user.age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">10</param>
<message>你输入的长度必须在${min}和${max}之间</message>
</field-validator>
</field>
5.双精度浮点数验证器
DoubleRangeFieldValidator验证器检查浮点数是否在指定的范围之内
fieldName:指定要验证的字段名
minInclusive:指定浮点数的最小值
maxinclusive:指定浮点数的最大值
<!-- 双精度浮点数验证器 -->
<validator type="double">
<param name="fieldName">price</param>
<param name="minInclusive">10.1</param>
<param name="maxInclusive">111.0</param>
<message>商品的价格必须在${minInclusive}到${maxInclusive}之间</message>
</validator>
<!-- 字段验证器 -->
<field name="price">
<field-validator type="double">
<param name="minExclusive">10.123</param>
<param name="maxExclusive">99.123</param>
<message>你输入的长度必须在${minExclusive}到${maxExclusive}之间</message>
</field-validator>
</field>
6.日期验证器
DateRangeFieldValidator验证日期是否在指定范围之内
<!-- 日期验证器 -->
<!-- 使用非字段验证器的配置 -->
<validator type="date">
<param name="fieldName">user.birth</param>
<param name="min">01/01/1990</param>
<param name="max">01/01/2020</param>
<message>出生日期必须在1990年1月1日到什么之间</message>
</validator>
<!-- 采用字段验证器 -->
<field name="user.birth">
<field-validator type="date">
<param name="min">01/01/1990</param>
<param name="max">01/01/2050</param>
<message>你输入的出生日期必须在1990年1月1日到2050年1月1日之间</message>
</field-validator>
</field>
7.表达式验证器
<!-- 表达式验证器 -->
<!--Expression Validator是一个普通验证码,它基于OGNL表示进行验证。该验证器可以接受一个参数:expression
这个参数指定要计算的OGNL表达式,该表达式是基于栈进行求值,表达式的结果必须是Boolean,不支持<field>标签 -->
<validator type="expression">
<param name="expression">user.password==verifyPassword</param>
<message>输入密码不一致</message>
</validator>
8.字段表示式验证器
<validator type="fieldexpression">
<param name="fieldName">verifyPassword</param>
<param name="expression">verifyPassword==user.password</param>
<message>再次输入的密码不一致!</message>
</validator>
<!-- 使用字段校验器风格来配置 -->
<field name="verifyPassword">
<field-validator type="fieldexpression">
<param name="expression">verifyPassword==user.userpass</param>
<message>输入密码不一致 </message>
</field-validator>
</field>
9.正则表达式验证器
<!-- 正则表达式验证器 -->
<!-- 采用非字段验证器 -->
<validator type="regex">
<param name="fieldName">user.zipcode</param>
<param name="expression"><![CDATA[[0-9\d{5}(?!\d)]]]></param>
<message>邮政编码无效</message>
</validator>
<!-- 使用字段校验器配置风格来配置正则表达式 -->
<field name="user.zipcode">
<field-validator type="regex">
<param name="expression"><![CDATA[[0-9\d{5}(?!\d)]]]></param>
<message>邮政编码无效</message>
</field-validator>
</field>
10.邮件地址验证器
<!-- 邮件地址验证器 -->
<!-- 使用非字段校验器配置风格来配置邮件校验器 -->
<validator type="email">
<param name="fieldName">user.email</param>
<message>邮箱地址无效</message>
</validator>
<field name="user.email">
<field-validator type="email">
<message>邮箱地址无效</message>
</field-validator>
</field>
11.网址验证器
<!-- 网址验证器 -->
<validator type="url">
<param name="fieldName">homePage</param>
<message>输入网址不合法</message>
</validator>
<field name="homePage">
<field-validator type="url">
<message>输入网址不合法</message>
</field-validator>
</field>
12.visitor验证器
我们编写的验证器,基本上针对特定的user对象的,但是对于model层实体类,在很多地方都要实例化他们的对象,那样的话我们就会在很多地方编写验证。
VistorFieldValidator验证器介绍:
作用,提高代码重用性
VistorFieldValidator可以处理简单的对象属性,也可以处理对象集合或者对象数组
VistorFieldValidator验证器接受三个参数:
fieldname:指定要验证的字段名
context:指定验证发生的上下文,是可选的
appendPrefix:Boolean型,指定要添加到字段上的前缀。参数可选,默认值为true
13.转换验证器
<!-- 转换验证器 -->
<validator type="conversion">
<param name="fieldName">intField</param>
<param name="repopulateField">true</param>
<message>不能转换成Integer类型!</message>
</validator>
<field name="intField">
<field-validator type="conversion">
<param name="repopulateField">true</param>
<message>不能转换成Integer类型</message>
</field-validator>
</field>