- 浏览: 196909 次
- 性别:
- 来自: 芜湖
文章分类
- 全部博客 (139)
- 软件 (0)
- Pattern (6)
- CSDN导入 (19)
- Struts (3)
- [网站分类]1.网站首页原创 (27)
- [网站分类]6.转载区 (4)
- Hibernate (10)
- Error (8)
- [网站分类]2.Java新手区 (20)
- Java (8)
- [网站分类]4.其他技术区 (10)
- Web (1)
- C++ (2)
- Algorithm (4)
- Linux (2)
- Skill (1)
- Tech (2)
- Note (2)
- [网站分类]3.非技术区 (1)
- Database (1)
- Winty (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (0)
最新评论
-
haohao-xuexi02:
很不错哦。
O'Reilly cos上传组件的使用(1/3) - 上传文件 -
yoin528:
useUnicode=true&charact ...
[原]向MySQL数据库插入Blob数据的问题 -
xiaoqing20:
下载来看看!呵呵
[原]Struts2类型转换 -
xiaoqing20:
[原]Struts2类型转换
[标题]:[原]Struts2校验框架
[时间]:2009-7-27
[摘要]:校验框架配置、客户端校验
[关键字]:浪曦视频,Struts2应用开发系列,WebWork,Apache,validation
[环境]:struts-2.1.6、JDK6、MyEclipse7、Tomcat6
[作者]:Winty (wintys@gmail.com) http://www.blogjava.net/wintys
[正文]:
Struts校验框架提供了一种不用编写代码,只需修改配置文件即可对输入进行校验的功能。代码方式校验,即重写validate()方法。实际应用中,validate()与校验框架一般只选其一
。
1、校验框架配置
在RegisterAction.java相同目录新建校验框架配置文件RegisterAction-validation.xml。RegisterAction-validation.xml的DTD可以复制struts自带的示例struts2-mailreader-2.1.6中的DTD:
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd ">
xwork-validator-1.0.2.dtd:
<!--
XWork Validators DTD.
Used the following DOCTYPE.
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
-->
<!ELEMENT validators (field|validator)+>
<!ELEMENT field (field-validator+)>
<!ATTLIST field
name CDATA #REQUIRED
>
<!ELEMENT field-validator (param*, message)>
<!ATTLIST field-validator
type CDATA #REQUIRED
short-circuit (true|false) "false"
>
<!ELEMENT validator (param*, message)>
<!ATTLIST validator
type CDATA #REQUIRED
short-circuit (true|false) "false"
>
<!ELEMENT param (#PCDATA)>
<!ATTLIST param
name CDATA #REQUIRED
>
<!ELEMENT message (#PCDATA)>
<!ATTLIST message
key CDATA #IMPLIED
>
RegisterAction-validation.xml:
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<!--
与field等价的validator
<validator type="requiredstring">
<param name="fieldName">name</param>
<param name="trim">true</param>
<message>name required</message>
</validator>
<validator type="stringlength">
<param name="fieldName">name</param>
<param name="trim">true</param>
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>name length range : ${minLength} ~ ${maxLength}</message>
</validator>
-->
<field name="name">
<field-validator type="requiredstring" >
<param name="trim">true</param>
<message>name required</message>
</field-validator>
<field-validator type="stringlength">
<param name="trim">true</param>
<param name="minLength ">6</param>
<param name="maxLength">10</param>
<message>name length range : ${minLength} ~ ${maxLength}</message>
</field-validator>
</field>
<field name="age">
<field-validator type="conversion" short-circuit="true" >
<message>the field age conversion error</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>age range: ${min} ~ ${max}</message>
</field-validator>
</field>
<field name="birthday">
<field-validator type="required" >
<message>birthday required</message>
</field-validator>
<field-validator type="date">
<param name="min">2009-01-01</param>
<param name="max">2009-12-31</param>
<message>birthday range: ${min} ~ ${max}</message>
</field-validator>
</field>
<field name="email">
<field-validator type="email">
<message>invalid email address</message>
</field-validator>
</field>
</validators>
说明:
a.校验框架有两种校验方式:field和validator。
field校验:先指定需要校验的属性,再指定校验方式。validator校验:先指定校验方式,再指定需要校验的属性。两种方式是等价的。
field校验:
<field name="name">
<field-validator type="requiredstring" >
<param name="trim">true</param>
<message>name required</message>
</field-validator>
<field-validator type="stringlength">
<param name="trim">true</param>
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>name length range : ${minLength} ~ ${maxLength}</message>
</field-validator>
</field>
validator校验:
<validator type="requiredstring">
<param name="fieldName"
>name</param>
<param name="trim">true</param>
<message>name required</message>
</validator>
<validator type="stringlength">
<param name="fieldName"
>name</param>
<param name="trim">true</param>
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>name length range : ${minLength} ~ ${maxLength}</message>
</validator>
b.<field-validator type="requiredstring" >中的type及其对应的xwork类可以在xwork-2.1.2.jar/com.opensymphony.xwork2.validator.validators/default.xml
中查找到。
default.xml:
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator Config 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">
<!-- START SNIPPET: validators-default -->
<validators>
<validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
<validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
<validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
<validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
<validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
<validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
<validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
<validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
<validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
<validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
<validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
<validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
<validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
<validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
<validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
<validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
</validators>
<!-- END SNIPPET: validators-default -->
c. 对于校验<field-validator type="requiredstring" >:String用requiredstring,其它类型用required。
d. 验证错误将默认产生FieldError。
e. short-circuit="true"
: 一个校验失败,是否是继续执行后续校验。
f. 对于相同属性的FieldError,validate()方法中的验证和RegisterAction-validation.xml中的验证都会执行,并且FieldError都会显示。
执行顺序: RegisterAction-validation.xml => validate()。
2、特定于业务逻辑的局部校验:
对于struts.xml中<action>的method="register"指定的业务方法register(),使用校验RegisterAction-register-validation.xml(与RegisterAction.java在同一目录下)。同时,RegisterAction-validation.xml会被执行。执行顺序: RegisterAction-validation.xml => RegisterAction-register-validation.xml
3、Struts2客户端校验
设置struts标签<s:form>中validate="true"。这样就会根据RegisterAction-validation.xml生成页面Javascript,在客户端执行校验。
注意:
a.struts标签不能使用simple主题
。
b.Struts2客户端校验功能较弱,一般不用。
4、FieldError和ActionError的实现
a.真正存放field级别错误信息的对象是LinkedHashMap。
b.该LinkedHashMap的key是String类型的,value是ArrayList类型
,所以同一个key可以对应多个错误消息。
c.对于Action级别的错误信息,实际上是放置在ArrayList中的。
[参考资料]:
《浪曦视频之Struts2应用开发系列》
[附件]:
源代码 :
struts_ValidationFramework.zip
- struts_ValidationFramework.zip (4.8 KB)
- 下载次数: 3
发表评论
-
[原]MyEclipse location already exists
2009-07-27 00:37 1703[标题]:[原]MyEclipse location alre ... -
[原]Exception starting filter MyStruts2
2009-07-27 19:41 1016[标题]:[原]Exception starting filt ... -
[原]Struts2-拦截器
2009-08-01 00:21 1128[标题]:[原]Struts2-拦截器 [时间]:2009- ... -
[原]Struts2-文件上传与下载
2009-08-08 08:48 2148[标题]:[原]Struts2-文件上 ... -
[原]Struts2-国际化
2009-08-10 18:13 1872[标题]:[原]Struts2-国际化 [时间]:2009- ... -
[原]Struts2-深入探索
2009-08-29 20:32 1034[标题]:[原]Struts2-深入探索 [时间]:2009 ... -
[原]Struts2-整合JFreeChart
2009-09-03 17:10 1881[标题]:[原]Struts2-整合JFr ... -
[转]Java 小例子:数据持久化(保存数据到文件)
2009-03-16 11:00 1746说数据持久化,初学者可能还不太懂;但要说把数据保存到文件,这谁 ... -
[原]调试EL函数时,Tomcat提示NullPointerException
2009-04-03 19:02 892[标题]:调试EL函数时,Tomcat提示NullPointe ... -
[原]HelloWorldServlet
2009-05-27 22:16 906编译运行步骤: 1、将HelloWorldServlet.ja ... -
[原]getServletInfo()
2009-05-27 23:16 1347《JSP完全学习手册》学习心得之:getServletInfo ... -
[原]jsp:forward
2009-05-27 23:24 887《JSP完全学习手册》学习心得:jsp:forward Jud ... -
[原]jsp:param
2009-05-27 23:27 1546《JSP完全学习手册》学习心得:jsp:param param ... -
[原]request.getParameterValues()
2009-05-27 23:32 1187《JSP完全学习手册》学习心得:request.getPara ... -
[原]隐含对象config
2009-05-27 23:54 722《JSP完全学习手册》学习心得:隐含对象config < ... -
[原]cookie读写
2009-05-28 00:03 832《JSP完全学习手册》学习心得:cookie读写 <%@ ... -
[原]getHttpHeader
2009-05-28 00:14 818《JSP完全学习手册》学习心得:getHttpHeader g ... -
[原]向MySQL数据库插入Blob数据的问题
2009-06-03 23:45 3946[标题]:向MySQL数据库插 ... -
[原]SQL内外连接
2009-06-17 22:31 894-- Author:Winty(天堂露珠) -- Date: ...
相关推荐
Struts2校验框架应用
struts2校验框架使用心得 希望对初学者有所帮助
struts2校验框架 struts2校验框架 struts2校验框架 struts2校验框架
Struts2 和Struts1同样也提供了校验框架,但在Struts2 已经不再把校验框架做为一个插件,而是已经内置到了Struts2中,而且配置起来更为简单方便,功能也更强大。
struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架
Struts2的校验框架 Struts2的校验框架 Struts2的校验框架
2、用户名只能使用数字或者字母,长度为6~20之间; 3、密码、确认密码必须是数字和字母,长度为6~20之间; 4、密码、确认密码必须相同; 5、收入必须在0.001~10000.000之间; 6、年龄必须是整数且必须在0~120...
struts2_2校验框架struts2_2校验框架struts2_2校验框架
个人学习过程中 关于校验框架 的总结 希望跟大家分享下
通过参考资料,自己写的一个struts1校验框架的例子,希望对初学者有所帮助
(2):对密码校验的规则是用户不能为空,且只能是数字,长度为8到20之间。 (3):年龄的校验规则是必须是整数,且在1到120之间。 (4):生日的校验规则是必须在1950-1-1到1990-1-1之间。 (5):所有提示信息均要...
struts2自定义校验器实现,希望对初学者有所帮助。
struts框架及校验框架详解struts框架及校验框架详解
Struts2应用开发系列Struts2的校验框架
struts2 验证框架实例 掩饰了整个验证的过程 并讲解了一些网上没有说过的可能会遇到的错误
Struts2应用开发系列Struts2的校验框架