Struts2.0学习笔记 — 输入校验(Validation)
2009-07-31 13:15
288 查看
一、输入校验:register.jsp、register2.jsp、register3.jsp
输入校验建立在类型转换的基础之上,即先进行类型转换之后,再进行输入校验。
遇到类型转换错误的时候(也就是说不能进行类型转换),struts2框架自动生成一条错误信息,
并且将该错误信息放到addFieldError里面。但也可以自定义显示的错误信息:
全局定义:
在struts.xml文件<struts>下引入国际化配置文件:
<constant name="struts.custom.i18n.resources" value="message">
</constant>
注:name的值是固定的,"struts.custom.i18n.resources"
value的值可随意起,
并在src根目录(即calss根目录下)建message.properties,文件内容:
xwork.default.invalid.fieldvalue={0} error!!!!
局部定义:
对哪个Action类进行的类型转化错误,则应把该文件跟此Action类放在同一个包内,且二者的名
称要一致。
假如,RegisterAction类的age(int型)属性类型转化错误(给age一个abc的字符串,则进
行类型转化时出错),那么,此文件名应为:RegisterAction.properties,,,其内容为:
invalid.fieldvalue.age= Age conversion error!!
类型转换与输入校验的流程:
1. 首先Struts2对客户端传来的数据进行类型转换
2. 类型转换完毕后再进行输入校验
3. 如果类型转换和输入校验都没有错误发生,那么进入execute方法(调用商业逻辑)
注意:如果类型转换不成功,也同样要进行输入校验
当把一个struts2标签的主键的theme设置成theme="simple"的时候,表示该主键不再会有一个struts
给它的错误提示。且不在进行排版,需要设计者自己排版,该主键的label属性不再起作用
在struts.xml配置文件里可以通过method="method"自定义Action类里的主方法public String method(),
且此时该Action类中的校验方法为public void validateMethod()。如果此Action类中存在validate()方法,
则在校验时,先调用validate()方法,然后再调研自定义的校验方法validateMethod()。
二、校验框架:register4.jsp
任何一个Action类均可用xml校验框架来进行参数属性值的校验。xml文件与Action类文件在同一包下,且xml文件
的命名格式跟Action类名有狠大的关系:比如某Action类的名称为RegisterAction4。
如果一个JSP页面在该RegisterAction4类中的主方法是ececute(),则对该JSP页面的校验框架名称为RegisterAction4-validation.xml,
即是:类名-validation.xml(Action类全局校验框架)。
如果该JSP页面在RegisterAction4类中对应的主方法不是execute(),而是test()方法(通过<action>的method属性,
使method="test"得到),则对于该JSP页面属性的校验框架名称应为:RegisterAction4-test-validation.xml,
即:类名-主方法名-validation.xml(Action局部校验框架)。
DeviceCategoryAction-deviceCategoryAddNext-validation.xml
如果同时提供RegisterAction4-validation.xml和RegisterAction4-test-validation.xml两个校验框架的话,
即使JSP页面对应RegisterAction4的主方法是test(),那么也要先进行RegisterAction4-validation.xml的校验,
再进行RegisterAction4-test-validation.xml
的校验。
xml文件的内容可为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd
">
<validators>
<field name="username"><!-- 校验一个属性 -->
<!-- field-validator:表示对该属性的一次校验,其方式为type:此处为必须要填的校验。 type的值
在com.opensymphony.xwork2.validator.validators包下的default.xml文件下可查询到
每一个type都对应一个class,从中可以查看该type对应的类情况
-->
<field-validator type="requiredstring">
<!--param属性可以出现0到多次。
trim是校验方式type的值所对应的类的一个set方法的参数名称。true,表示赋给trim的值为true -->
<param name="trim">true</param>
<!-- 表示一旦用户信息不符合整个校验规则的话输出的提示信息 -->
<message>用户名不能为空!!</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>用户名必须在 ${minLength} 和 ${macLength} 之间</message>
</field-validator>
输入校验建立在类型转换的基础之上,即先进行类型转换之后,再进行输入校验。
遇到类型转换错误的时候(也就是说不能进行类型转换),struts2框架自动生成一条错误信息,
并且将该错误信息放到addFieldError里面。但也可以自定义显示的错误信息:
全局定义:
在struts.xml文件<struts>下引入国际化配置文件:
<constant name="struts.custom.i18n.resources" value="message">
</constant>
注:name的值是固定的,"struts.custom.i18n.resources"
value的值可随意起,
并在src根目录(即calss根目录下)建message.properties,文件内容:
xwork.default.invalid.fieldvalue={0} error!!!!
局部定义:
对哪个Action类进行的类型转化错误,则应把该文件跟此Action类放在同一个包内,且二者的名
称要一致。
假如,RegisterAction类的age(int型)属性类型转化错误(给age一个abc的字符串,则进
行类型转化时出错),那么,此文件名应为:RegisterAction.properties,,,其内容为:
invalid.fieldvalue.age= Age conversion error!!
类型转换与输入校验的流程:
1. 首先Struts2对客户端传来的数据进行类型转换
2. 类型转换完毕后再进行输入校验
3. 如果类型转换和输入校验都没有错误发生,那么进入execute方法(调用商业逻辑)
注意:如果类型转换不成功,也同样要进行输入校验
当把一个struts2标签的主键的theme设置成theme="simple"的时候,表示该主键不再会有一个struts
给它的错误提示。且不在进行排版,需要设计者自己排版,该主键的label属性不再起作用
在struts.xml配置文件里可以通过method="method"自定义Action类里的主方法public String method(),
且此时该Action类中的校验方法为public void validateMethod()。如果此Action类中存在validate()方法,
则在校验时,先调用validate()方法,然后再调研自定义的校验方法validateMethod()。
二、校验框架:register4.jsp
任何一个Action类均可用xml校验框架来进行参数属性值的校验。xml文件与Action类文件在同一包下,且xml文件
的命名格式跟Action类名有狠大的关系:比如某Action类的名称为RegisterAction4。
如果一个JSP页面在该RegisterAction4类中的主方法是ececute(),则对该JSP页面的校验框架名称为RegisterAction4-validation.xml,
即是:类名-validation.xml(Action类全局校验框架)。
如果该JSP页面在RegisterAction4类中对应的主方法不是execute(),而是test()方法(通过<action>的method属性,
使method="test"得到),则对于该JSP页面属性的校验框架名称应为:RegisterAction4-test-validation.xml,
即:类名-主方法名-validation.xml(Action局部校验框架)。
DeviceCategoryAction-deviceCategoryAddNext-validation.xml
如果同时提供RegisterAction4-validation.xml和RegisterAction4-test-validation.xml两个校验框架的话,
即使JSP页面对应RegisterAction4的主方法是test(),那么也要先进行RegisterAction4-validation.xml的校验,
再进行RegisterAction4-test-validation.xml
的校验。
xml文件的内容可为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd
">
<validators>
<field name="username"><!-- 校验一个属性 -->
<!-- field-validator:表示对该属性的一次校验,其方式为type:此处为必须要填的校验。 type的值
在com.opensymphony.xwork2.validator.validators包下的default.xml文件下可查询到
每一个type都对应一个class,从中可以查看该type对应的类情况
-->
<field-validator type="requiredstring">
<!--param属性可以出现0到多次。
trim是校验方式type的值所对应的类的一个set方法的参数名称。true,表示赋给trim的值为true -->
<param name="trim">true</param>
<!-- 表示一旦用户信息不符合整个校验规则的话输出的提示信息 -->
<message>用户名不能为空!!</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>用户名必须在 ${minLength} 和 ${macLength} 之间</message>
</field-validator>
相关文章推荐
- struts中根据validation.xml配置文件进行页面输入项的校验
- Struts 2学习及问题记录(3)——类型转换及输入校验
- 简析struts2.x中的输入校验
- struts 输入校验
- Struts 2 的输入校验(2)
- Struts 使用要点(概述,Spring与Struts的整合,输入校验与消息显示)
- Struts 2读书笔记-----使用Struts 2的输入校验
- struts 输入校验
- Struts 使用要点(概述,Spring与Struts的整合,输入校验与消息显示)
- struts第十天-----对action中的所有方法进行输入校验
- 在Struts中对用户输入信息的校验方法对比:validate 和validator
- struts2之二(输入校验)
- Struts运行的基本流程及输入校验
- Struts 2读书笔记-----使用Struts 2的输入校验
- Struts 2读书笔记-----使用Struts 2的输入校验
- Struts 2读书笔记-----使用Struts 2的输入校验
- struts第十一天--通过xml的方式来对输入参数进行校验
- Struts的类型转换及输入校验(Struts2的输入校验)
- struts 2的输入校验
- Struts输入校验之后保留原先的输入值