内建校验器(1)

简介:

Struts 2提供了大量的内建校验器,这些内建的校验器可以满足大部分应用的校验需求,开发者只需要使用这些校验器即可。如果应用有一个特别复杂的校验需求,而且该校验有很好的复用性,开发者可以开发自己的校验器。

使用WinRAR打开Struts 2发布包的解压缩文件中的xwork-2.2.1.jar文件,在该压缩文件的com\opensymphony\xwork2\validator\validators路径下找到一个default.xml文件,这个文件就是Struts 2默认的校验器注册文件。该文件的代码如下:

 
  1. <validators>  
  2.     <!-- 必填校验器 -->  
  3.     <validator name="required" class="com.opensymphony.xwork  
  4.         .validator.validators.RequiredFieldValidator"/>  
  5.     <!-- 必填字符串校验器 -->  
  6.     <validator name="requiredstring" class="com.opensymphony.xwork  
  7.         .validator.validators. RequiredStringValidator"/>  
  8.     <!-- 整数校验器 -->  
  9.     <validator name="int" class="com.opensymphony.xwork  
  10.         .validator.validators.IntRangeFieldValidator"/>  
  11.     <!-- 长整数校验器 -->  
  12.     <validator name="long" class="com.opensymphony.xwork2  
  13.         .validator.validators.LongRangeFieldValidator"/>  
  14.     <!-- 短整数校验器 -->  
  15.     <validator name="short" class="com.opensymphony.xwork2  
  16.         .validator.validators.ShortRangeFieldValidator"/>  
  17.     <!-- 双精度浮点数校验器 -->  
  18.     <validator name="double" class="com.opensymphony.xwork  
  19.         .validator.validators.DoubleRangeFieldValidator"/>  
  20.     <!-- 日期校验器 -->  
  21.     <validator name="date" class="com.opensymphony.xwork  
  22.         .validator.validators. DateRangeFieldValidator"/>  
  23.     <!-- 表达式校验器 -->  
  24.     <validator name="expression" class="com.opensymphony.xwork  
  25.         .validator.validators. ExpressionValidator"/>  
  26.     <!-- 字段表达式校验器 -->  
  27.     <validator name="fieldexpression" class="com.opensymphony.xwork  
  28.         .validator.validators. FieldExpressionValidator"/>  
  29.     <!-- 电子邮件校验器 -->  
  30.     <validator name="email" class="com.opensymphony.xwork  
  31.         .validator.validators. EmailValidator"/>  
  32.     <!-- 网址校验器 -->  
  33.     <validator name="url" class="com.opensymphony.xwork  
  34.         .validator.validators.URLValidator"/>  
  35.     <!-- Visitor校验器 -->  
  36.     <validator name="visitor" class="com.opensymphony.xwork  
  37.         .validator.validators.VisitorFieldValidator"/>  
  38.     <!-- 转换校验器 -->  
  39.     <validator name="conversion" class="com.opensymphony.xwork  
  40.         .validator.validators. ConversionErrorFieldValidator"/>  
  41.     <!-- 字符串长度校验器 -->  
  42.     <validator name="stringlength" class="com.opensymphony.xwork  
  43.         .validator.validators.StringLengthFieldValidator"/>  
  44.     <!-- 正则表达式校验器 -->  
  45.     <validator name="regex" class="com.opensymphony.xwork  
  46.         .validator.validators. RegexFieldValidator"/>  
  47. </validators>  

上面的粗体字代码标出的校验器名称,就是Struts 2所支持的全部校验器。

过上面的代码可以看出,注册一个校验器是如此简单:通过一个<validator .../>元素即可注册一个校验器,每个<validator .../>元素的name属性指定该校验器的名字,class属性指定该校验器的实现类。

如果开发者开发了一个自己的校验器,则可以通过添加一个validators.xml文件(该文件应该放在WEB-INF/classes路径下)来注册校验器。validators.xml文件的内容也是由多个<validator .../>元素组成的,每个<validator .../>元素注册一个校验器。

注意:

如果Struts 2系统在WEB-INF/classes路径下找到一个validators.xml文件,则不会再加载系统默认的default.xml文件。因此,如果开发者提供了自己的校验器注册文件(validators.xml文件),一定要把default.xml文件里的全部内容复制到validators.xml文件中

1.必填校验器

必填校验器的名字是required,该校验器要求指定的字段必须有值(非空),该校验器可以接受如下参数。

Ø  fieldName:该参数指定校验的Action属性名,如果采用字段校验器风格,则无须指定该参数。

采用非字段校验器配置风格时,该校验器的配置示例如下:

 
  1. <validators>  
  2.     <!-- 使用非字段校验器风格来配置必填校验器 -->  
  3.     <validator type="required">  
  4.         <!-- 指定需要校验的字段名 -->  
  5.         <param name="fieldName">username</param>  
  6.         <!-- 指定校验失败的提示信息 -->  
  7.         <message>username must not be null</message>  
  8.     </validator>  
  9.     ..  
  10. <validators>  

采用字段校验器配置风格时,该校验器的配置示例如下:

 

 
  1. <validators>  
  2.     <!-- 使用字段校验器风格来配置必填校验器,校验username属性 -->  
  3.     <field name="username">  
  4.         <field-validator type="required">  
  5.             <!-- 指定校验失败的提示信息 -->  
  6.             <message>username must not be null</message>  
  7.         </ field-validator>  
  8.         ...  
  9.     </field>  
  10.     ..  
  11. <validators>  

2.必填字符串校验器

必填字符串校验器的名字是requiredstring,该校验器要求字段值必须非空且长度大于0,即该字符串不能是""。该校验器可以接受如下参数。

Ø  fieldName:该参数指定校验的Action属性名,如果采用字段校验器风格,则无须指定该参数。

Ø  trim:是否在校验前截断被校验属性值前后的空白,该属性是可选的,默认是true

采用非字段校验器配置风格时,该校验器的配置示例如下:

 
  1. <validators>  
  2.     <!-- 使用非字段校验器风格来配置必填字符串校验器 -->  
  3.     <validator type="requiredstring">  
  4.         <!-- 指定需要校验的字段名 -->  
  5.         <param name="fieldName">username</param>  
  6.         <!-- 指定截断被校验属性值前后的空白 -->  
  7.         <param name="trim">true</param>  
  8.         <!-- 指定校验失败的提示信息 -->  
  9.         <message>username is required</message>  
  10.     </validator>  
  11.     ..  
  12. <validators>  

采用字段校验器配置风格时,该校验器的配置示例如下:

 

 
  1. <validators>  
  2.     <!-- 使用字段校验器风格来配置必填字符串校验器,校验username属性 -->  
  3.     <field name="username">  
  4.         <field-validator type="requiredstring">  
  5.             <!-- 指定截断被校验属性值前后的空白 -->  
  6.             <param name="trim">true</param>  
  7.             <!-- 指定校验失败的提示信息 -->  
  8.             <message>username is required</message>  
  9.         </ field-validator>  
  10.         ...  
  11.     </field>  
  12.     ..  
  13. <validators>  

3.整数校验器

整数校验器包括intlongshort,该校验器要求字段的整数值必须在指定范围内。该校验器可以接受如下参数。

Ø  fieldName:该参数指定校验的Action属性名,如果采用字段校验器风格,则无须指定该参数。

Ø  min:指定该属性的最小值,该参数可选,如果没有指定,则不检查最小值。

Ø  max:指定该属性的最大值,该参数可选,如果没有指定,则不检查最大值。

采用非字段校验器配置风格时,该校验器的配置示例如下:

 
  1. <validators>  
  2.     <!-- 使用非字段校验器风格来配置整数校验器 -->  
  3.     <validator type="int">  
  4.         <!-- 指定需要校验的字段名 -->  
  5.         <param name="fieldName">age</param>  
  6.         <!-- 指定age属性的最小值 -->  
  7.         <param name="min">20</param>  
  8.         <!-- 指定age属性的最大值 -->  
  9.         <param name="max">50</param>  
  10.         <!-- 指定校验失败的提示信息 -->  
  11.         <message>Age needs to be between ${min} and ${max}</message>  
  12.     </validator>  
  13.     ..  
  14. <validators>  

采用字段校验器配置风格时,该校验器的配置示例如下:

 
  1. <validators>  
  2.     <!-- 使用字段校验器风格来配置整数校验器,校验age属性 -->  
  3.     <field name="age">  
  4.         <field-validator type="int">  
  5.             <!-- 指定age属性的最小值 -->  
  6.             <param name="min">20</param>  
  7.             <!-- 指定age属性的最大值 -->  
  8.             <param name="max">50</param>  
  9.             <!-- 指定校验失败的提示信息 -->  
  10.             <message>Age needs to be between ${min} and ${max}</message>  
  11.         </ field-validator>  
  12.         ...  
  13.     </field>  
  14.     ..  
  15. <validators>  

与整数校验器用法几乎相同的是双精度浮点数校验器,唯一的区别是它要求被校验的Action属性是双精度浮点数。

4.日期校验器

日期校验器的名字是date,该校验器要求字段的日期值必须在指定范围内。该校验器可以接受如下参数。

Ø  fieldName:该参数指定校验的Action属性名,如果采用字段校验器风格,则无须指定该参数

Ø  min:指定该属性的最小值,该参数可选,如果没有指定,则不检查最小值。

Ø  max:指定该属性的最大值,该参数可选,如果没有指定,则不检查最大值。

注意:

如果系统没有指定日期转换器,则默认使用XWorkBasicConverter完成日期转换。进行日期转换时,默认使用struts.properties里指定的Locale,或者系统默认的LocaleDate.SHORT格式来进行日期转换。

采用非字段校验器配置风格时,该校验器的配置示例如下:

 
  1. <validators>  
  2.     <!-- 使用非字段校验器风格来配置日期校验器 -->  
  3.     <validator type="date">  
  4.         <!-- 指定需要校验的字段名 -->  
  5.         <param name="fieldName">birth</param>  
  6.         <!-- 指定birth属性的最小值 -->  
  7.         <param name="min">1990-01-01</param>  
  8.         <!-- 指定birth属性的最大值 -->  
  9.         <param name="max">2010-01-01</param>  
  10.         <!-- 指定校验失败的提示信息 -->  
  11.         <message> Birthday must be within ${min} and ${max} </message>  
  12.     </validator>  
  13.     ...  
  14. <validators>  

采用字段校验器配置风格时,该校验器的配置示例如下:

 

 
  1. <validators>  
  2.     <!-- 使用字段校验器风格来配置日期校验器,校验birth属性 -->  
  3.     <field name="birth">  
  4.         <field-validator type="date">  
  5.             <!-- 指定birth属性的最小值 -->  
  6.             <param name="min">1990-01-01</param>  
  7.             <!-- 指定birth属性的最大值 -->  
  8.             <param name="max">2010-01-01</param>  
  9.             <!-- 指定校验失败的提示信息 -->  
  10.             <message> Birthday must be within ${min} and ${max} </message>  
  11.         </ field-validator>  
  12.         ...  
  13.     </field>  
  14.     ...  
  15. <validators>  

 

 

本文转自 fkJava李刚 51CTO博客,原文链接:http://blog.51cto.com/javaligang/883419 ,如需转载请自行联系原作者

相关文章
|
1月前
|
前端开发 JavaScript 安全
对象属性值的黑魔法:ES8的简化语法让你的代码更简洁
对象属性值的黑魔法:ES8的简化语法让你的代码更简洁
|
4月前
|
JavaScript
TypeScript-类方法修饰符和TypeScript-类可选属性和参数属性
TypeScript-类方法修饰符和TypeScript-类可选属性和参数属性
27 0
|
7月前
|
Python
【Django学习】(九)自定义校验器_单字段_多字段校验_模型序列化器类
【Django学习】(九)自定义校验器_单字段_多字段校验_模型序列化器类
|
存储 JSON 算法
DO447使用过滤器和插件转换器--使用过滤器处理变量
DO447使用过滤器和插件转换器--使用过滤器处理变量
173 0
DO447使用过滤器和插件转换器--使用过滤器处理变量
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 属性缺失 propertyMissing 函数回调 | 方法缺失 methodMissing 函数回调 )
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 属性缺失 propertyMissing 函数回调 | 方法缺失 methodMissing 函数回调 )
117 0
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 属性缺失 propertyMissing 函数回调 | 方法缺失 methodMissing 函数回调 )
【Groovy】编译时元编程 ( 利用注解进行 AST 语法树转换 | 定义注解并使用 GroovyASTTransformationClass 注明 AST 转换接口 | AST 转换接口实现 )
【Groovy】编译时元编程 ( 利用注解进行 AST 语法树转换 | 定义注解并使用 GroovyASTTransformationClass 注明 AST 转换接口 | AST 转换接口实现 )
339 0
【Groovy】编译时元编程 ( 利用注解进行 AST 语法树转换 | 定义注解并使用 GroovyASTTransformationClass 注明 AST 转换接口 | AST 转换接口实现 )
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 动态拦截函数 | 动态获取 MetaClass 中的方法 | evaluate 方法执行Groovy脚本 )
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 动态拦截函数 | 动态获取 MetaClass 中的方法 | evaluate 方法执行Groovy脚本 )
164 0
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 动态拦截函数 | 动态获取 MetaClass 中的方法 | evaluate 方法执行Groovy脚本 )
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Category 注解进行方法注入 | 分类注入方法查找优先级 )
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Category 注解进行方法注入 | 分类注入方法查找优先级 )
135 0
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Category 注解进行方法注入 | 分类注入方法查找优先级 )
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Mixin 注解进行方法注入 | Mixin 混合多个类优先级分析 )
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Mixin 注解进行方法注入 | Mixin 混合多个类优先级分析 )
117 0