内建校验器(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 ,如需转载请自行联系原作者

相关文章
|
5月前
|
Java Maven 编译器
Java编译器注解运行和自动生成代码问题之RoundEnvironment和注解类型集合有什么区别
Java编译器注解运行和自动生成代码问题之RoundEnvironment和注解类型集合有什么区别
|
5月前
|
Java 编译器
Java编译器注解运行和自动生成代码问题之指定一个注解处理器处理所有类型的注解的问题如何解决
Java编译器注解运行和自动生成代码问题之指定一个注解处理器处理所有类型的注解的问题如何解决
|
7月前
|
开发框架 .NET C#
C# 10.0中的扩展属性与模式匹配:深入解析
【1月更文挑战第20天】C# 10.0引入了众多新特性,其中扩展属性与模式匹配的结合为开发者提供了更强大、更灵活的类型检查和代码分支能力。通过这一特性,开发者可以在不修改原始类的情况下,为其添加新的行为,并在模式匹配中利用这些扩展属性进行更精细的控制。本文将详细探讨C# 10.0中扩展属性与模式匹配的工作原理、使用场景以及最佳实践,帮助读者更好地理解和应用这一新功能。
|
Java API Spring
Spring判断方法名是符合给定的SPEL+表达式的+API
Spring判断方法名是符合给定的SPEL+表达式的+API
85 0
【Django学习】(九)自定义校验器_单字段_多字段校验_模型序列化器类
【Django学习】(九)自定义校验器_单字段_多字段校验_模型序列化器类
|
存储 JSON 算法
DO447使用过滤器和插件转换器--使用过滤器处理变量
DO447使用过滤器和插件转换器--使用过滤器处理变量
208 0
DO447使用过滤器和插件转换器--使用过滤器处理变量
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 属性缺失 propertyMissing 函数回调 | 方法缺失 methodMissing 函数回调 )
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 属性缺失 propertyMissing 函数回调 | 方法缺失 methodMissing 函数回调 )
157 0
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 属性缺失 propertyMissing 函数回调 | 方法缺失 methodMissing 函数回调 )
【错误记录】Groovy 扩展方法调用报错 ( 静态扩展方法 或 实例扩展方法 需要分别配置 | 没有配置调用会报错 groovy.lang.MissingMethodException )
【错误记录】Groovy 扩展方法调用报错 ( 静态扩展方法 或 实例扩展方法 需要分别配置 | 没有配置调用会报错 groovy.lang.MissingMethodException )
584 0
【错误记录】Groovy 扩展方法调用报错 ( 静态扩展方法 或 实例扩展方法 需要分别配置 | 没有配置调用会报错 groovy.lang.MissingMethodException )
|
Java
【Groovy】Groovy 动态语言特性 ( Groovy 中函数实参自动类型推断 | 函数动态参数注意事项 )
【Groovy】Groovy 动态语言特性 ( Groovy 中函数实参自动类型推断 | 函数动态参数注意事项 )
289 0
【Groovy】Groovy 动态语言特性 ( Groovy 中函数实参自动类型推断 | 函数动态参数注意事项 )
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Mixin 注解进行方法注入 | Mixin 混合多个类优先级分析 )
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Mixin 注解进行方法注入 | Mixin 混合多个类优先级分析 )
145 0