Struts2的输入验证(二)-声明式验证证框架的原理

一、Struts2 声明式验证原理解析

1、Struts2 默认的拦截器栈中提供了一个 validation 拦截器,validation 拦截器负责加载和执行已注册的验证程序。

其运行时序图如下:



2、每个具体的验证规则都会对应具体的一个验证器,有一个配置文件把验证规则名称和验证器关联起来了,而实际上执行验证的就是那个验证器。

   该文件位于 com.opensymphony.xwork2.validator.validators 下的 default.xml。

  如下图所示:

  

3、配置文件与验证器属性之间的对应关系,如下图所示:

二、Struts2内建的验证程序

 Struts2内建的验证程序(参考上图),其中部分的具体描述如下:

1)required: 确保某给定字段的值不是空值 null

2)requiredstring: 确保某给定字段的值既不是空值 null, 也不是空白(即空字符串).

–trim 参数. 默认为 true, 表示 struts 在验证该字段值之前先剔除前后空格.

3)stringlength: 验证一个非空的字段值是不是有足够的长度.

–minLength: 相关字段的最小长度. 若没有给出这个参数, 该字段将没有最小长度限制

–maxLength:相关字段的最大长度. 若没有给出这个参数, 该字段将没有最大长度限制

–trim: 在验证之前是否去除前后空格

4)date: 确保某给定日期字段的值落在一个给定的范围内

–max:相关字段的最大值. 若没给出这个参数, 该字段将没有最大值限制

–min:相关字段的最小值. 若没给出这个参数, 该字段将没有最小值限制

5)email: 检查给定 String 值是否是一个合法的 email

6)url: 检查给定 String 值是否是一个合法的 url

7)regex: 检查某给定字段的值是否与一个给定的正则表达式模式相匹配.

–expresssion*: 用来匹配的正则表达式

–caseSensitive: 是否区分字母的大小写. 默认为 true

–trim: 是否去除前后空格. 默认为 true

8)int: 检查给定整数字段值是否在某一个范围内

–min: 相关字段的最小值. 若没给出这个参数, 该字段将没有最小值限制

–max: 相关字段的最大值. 若没给出这个参数, 该字段将没有最大值限制

9)conversion: 检查对给定 Action 属性进行的类型转换是否会导致一个转换错误. 该验证程序还可以在默认的类型转换消息的基础上添加一条自定义的消息

10)expression 和 fieldexpression: 用来验证给定字段是否满足一个 OGNL 表达式.

–前者是一个非字段验证程序, 后者是一个字段验证程序.

–前者在验证失败时将生成一个 action 错误, 而后者在验证失败时会生成一个字段错误

–expression*: 用来进行验证的 OGNL 表达式

posted @ 2014-08-22 17:03  KnightKitt  阅读(302)  评论(0编辑  收藏  举报