Struts框架_9 Struts2的验证

Struts2的验证
验证分为两种:
>声明式验证:
I.先明确对哪-个Action的哪-个字段进行验证: age
II.编写配置文件:
>把struts-2.3.15.3\apps\struts2-blank \WEB- INF \classes \example下的Login-validation. xml文件复制到当前Action所在的包下。
>把该配置文件改为:把Login改为当前Action的名字。


>编写验证规则:参见struts-2.3.15. 3/docs/WW/ docs/validation.html 文档即可.
>在配置文件中可以定义错误消息:

>该错误消息可以国际化吗?

根路径下:


III.若验证失败,则转向input 的那个result.所以需要配置name=input的result
<result name=" input">/validation.jsp</result>

IV,如何显示错误消息呢?
>若使用的是非simple,则自动显示错误消息。
>若使用的是simple主题,则需要s:fielderror标签或直接使用EL表达式(使用OGNL)
${fieldErrors.age[0] }
OR
<s:fielderror fieldName=" age" ></s :fielderror>*

Struts2内建的验证规则
●conversion validator :转换验证器
●date validator :日期验证器
●double validator :浮点验证器
●email validator : email验证器
●expression validator :表达式验证器
●fieldexpression validator :字段表达式验证器
●int validator :整型验证器
●regex validetor :正则表达式验证器
●required validator :非空验证器
●requiredstring validator :非空字符串验证器
●stringlength validator :字符串长度验证器
●url validator : url格式验证器
●visitor validator :复合属性验证器

验证程序的配置:

3).注意:若一个Action 类可以应答多个action请求,多个action 请求使用不同的验证规则,怎么办?
>为每一个不同的action请求定义其对应的验证文件: ActionClassName-AliasName-validation . xml
>不带别名的配置文件: ActionClassName-validation. xml中的验证规则依然会发生作用。可以把各个action公有的验证规则配置在其中,但需要注意的是,只适用于某一个action的请求的验证规则就不要这里再配置了


4),声明式验证框架的原理:
> Struts2 默认的拦截器栈中提供了一个validation拦截器
>每个具体的验证规则都会对应具体的一个验证器, 有一个配置文件把验证规则名称和验证器关联起来了。而实际上验证的是那个验证器

该文件位于com. opensymphony . xwork2. validator . validators下的default .xml
<validator name= "required" class= "com.opensymphony.xwork2.validator.validators.RequiredFieldValidator>
Struts2内建的验证程序
●required:确保某给定字段的值不是空值null ," "。
●requiredstring:确保某给定字段的值既不是空值null,也不是空白.
- trim 参数.默认为true,表示struts在验证该字段值之前先剔除前后空格.
●stringlength:验证一 个非空的字段值是不是有足够的长度.
- minLength: 相关字段的最小长度.若没有给出这个参数该字段将没有最小长度限制
- maxLength:相关字段的最大长度.若没有给出这个参数该字段将没有最大长度限制
- trim: 在验证之前是否去除前后空格
●date:确保某给定日期字段的值落在一 个给定的范围内
- max:相关字段的最大值,若没给出这个参数该字段将没有最大值限制
- min:相关字段的最小值.若没给出这个参数该字段将没有最小值限制
●email:检查给定String值是否是-一个合法的email
●ur:检查给定String值是否是一一个合法的url
●rgex:检查某给定字段的值是否与一一个给定的正则表达式模式相匹配.
- expresssion*:用来匹配的正则表达式
- caseSensitive: 是否区分字母的大小写.默认为true
trim:是否去除前后空格.默认为true
●int:检查给定整数字段值是否在某- 个范围内
- min:相关字段的最小值.若没给出这个参数,该字段将没有最小值限制
- max:相关字段的最大值.若没给出这个参数该字段将没有最大值限制
●conversion: 检查对给定Action属性进行的类型转换是否会导致一个转换错误.该验证程序还可以在默认的类型转换消息的基础上添加一条自定义的消息

短路验证器:<validator/>元素和<field-validator /> 元素可以指定一个可选的short-circuit属性,该属性指定该验证器是否是短验证器,默认值为false。对同一个字段内的多个验证器, 如果一个短路验证器验证失败,其他验证器不会继续校验

●expression 和fieldexpression;用来验证给定字段是否满足一个OGNL表达式
-前者是一个非字段验证程序,后者是一个字段验证程序.
-前者在验证失败时将生成一个action错误而后者在验证失败时会生成一个字段错误
- expression*: 用来进行验证的OGNL表达式

6).若类型转换失败,默认情况下还会执行后面的拦截器,还会进行验证,可以通过修改ConversionErrorInterceptor 源代码的方式使当类型转换失败时,不再执行后续的验证拦截器,, 而直接返回input的result
将源码复制到包中,修改部分代码:

7).关于非字段验证:不是针对于某一个字段的验证,

显示非字段验证的错误消息,使用s:actionerror标签: <s : actionerror/>

8).不同的字段使用同样的验证规则,而且使用同样的响应消息?

9). 自定义验证器:
定义一个验证器的类
>自定义的验证器都需要实现Validator .
>可以选择继承ValidatorSupport或FieldValidatorSupport类
>若希望实现一个一般的验证器,则可以维承ValidatorSupport
>若希望实现一个字段验证器,则可以继承FieldValidatorSupport
>具体实现可以参考目前已经有的验证器。

>若验证程序需要接受一个输入参数, 需要为这个参数增加一个相应的属性


II. 在配置文件中配置验证器
>默认情况下下,Struts2 会在类路径的根目录下加载validators.xml文件。在该文件中加载验证器.
该文件的定义方式同默认的验证器的那个配置文件:位于com. opensymphony . xwork2. validator. validators下的default.xml
>若类路径下没有指定的验证器,则从com. opensymphony.xwork2. validator.validators下的default.xml中的验证器加载

编程验证
●Struts2提供了一个Validateable接口,可以使Action类实现这个接口以提供编程验证功能
●ActionSupport类已经实现了Validateable接口

猜你喜欢

转载自blog.csdn.net/XiaoXiao_Lin/article/details/109399198