快速业务通道

在Struts 2.0中实现表单数据校验(Validation) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
="requiredstring" >        < message > This string is required </ message >      </ field-validator >    </ field > </ validators >

发布运行应用程序,在地址栏中键入http://localhost:8080/Struts2_Validation/Input.jsp,出现如图4所示页面。

在Struts 2.0中实现表单数据校验(Validation) - 编程入门网

图4 Input.jsp

在Struts 2.0中实现表单数据校验(Validation)(7)

时间:2011-06-27 BlogJava Max

直接点击“Submit”提交表单,出现图5所示的页面。

在Struts 2.0中实现表单数据校验(Validation) - 编程入门网

图5 错误提示

在Required String中随便填点东西,转到Output.jsp页面,如图6所示。

在Struts 2.0中实现表单数据校验(Validation) - 编程入门网

图6 Output.jsp

通过上面的例子,大家可以看到使用该校验框架十分简单方便。不过,上例还有两点不足:

还没有国际化错误消息;

没有实现客户端的校验。

当然,要完善以上不足,对于Struts 2.0来说,只是小菜一碟。

在Xxx-validation.xml文件中的<message>元素中加入key属性;

在Input.jsp中的<s:form>标志中加入validate="true"属性,就可以在用Javascript在客户端校验数据。

在Struts 2.0中实现表单数据校验(Validation)(8)

时间:2011-06-27 BlogJava Max

下面是具体的实现,首先在国际化资源文件中加入错误消息,然后按照上面说明实现。因为要使用Javascript在客户端显示出错信息,所以在加载Input.jsp页面时,Struts 2.0需要获得国际化的字符串,故我们需要使用Action来访问Input.jsp页面,具体实现请参考《在Struts 2.0中国际化(i18n)您的应用程序》的最后部分。最后发布运行应用程序,直接在页面中点击“Submit”,表单没有被提交并出现错误提示,如图7所示:

在Struts 2.0中实现表单数据校验(Validation) - 编程入门网

图7 客户端校验

校验框架是通过validation拦截器实现,该拦载被注册到默认的拦截器链中。它在conversionError拦截器之后,在validateXxx()之前被调用。这里又出现了一个选择的问题:到底是应该在action中通过validateXxx()或validate()实现校验,还是使用validation拦截器?绝大多数情况,我建议大家使用校验框架,只有当框架满足不了您的要求才自已编写代码实现。

配置文件查找顺序

在上面的例子中,我们通过创建ValidationAction-validation.xml来配置表单校验。Struts 2.0的校验框架自动会读取该文件,但这样就会引出一个问题——如果我的Action继承其它的Action类,而这两个Action类都需要对表单数据进行校验,那我是否会在子类的配置文件(Xxx-validation.xml)中复制父类的配置吗?

答案是不,因为Struts 2.0的校验框架跟《在Struts 2.0中国际化(i18n)您的应用程序》提到的“资源文件查找顺序”相似,有特定的配置文件查找顺序。不同的是校验框架按照自上而下的顺序在类层次查找配置文件。假设以下条件成立:

接口 Animal;

接口 Quadraped 扩展了 Animal;

类 AnimalImpl 实现了 Animal;

类 QuadrapedImpl 扩展了 AnimalImpl 实现了 Quadraped;

类 Dog 扩展了 QuadrapedImpl;

在Struts 2.0中实现表单数据校验(Validation)(9)

时间:2011-06-27 BlogJava Max

如果Dog要被校验,框架方法会查找下面的配置文件(其中别名是Action在struts.xml中定义的别名):

Animal-validation.xml

Animal-别名-validation.xml

AnimalImpl-validation.xml

AnimalImpl-别名-validation.xml

Quadraped-validation.xml

Quadraped-别名-validation.xml

QuadrapedImpl-validation.xml

QuadrapedImpl-别名-validation.xml

Dog-validation.xml

Dog-别名-validation.xml

已有的校验器

Struts 2.0已经为您实现很多常用的校验了,以下在jar的default.xml中的注册的校验器。

< validators >    < validator name

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号