在Struts中对用户输入信息的校验一般在FromBean中进行(除非需要访问数据库进行诸如登录信息的校验,因为这是Action的工作),本文将阐述如何在Struts中实现可配置的信息校验。
一、在FormBean中手工实现
最简单的方法是直接在FormBean中重写ActionForm类的validate方法,validate方法签名如下:
publicActionErrorsvalidate(ActionMappingmapping,HttpServletRequestreq)
比如需要校验age字段必须填写数字:
1publicActionErrorsvalidate(ActionMappingmapping,HttpServletRequestreq){
2ActionErrorserrors=newActionErrors();
3
4Stringage=this.getAge();
5if(!this.isNumber(age)){//isNumber()isnotimplemented
6errors.add(,);
7}
8
9returnerrors;
10}
在form提交后,容器会调用validate方法对表单数据进行校验,如果返回的ActionErrors为空(即校验通过),则将FormBean提交Action,否则重定向到提交form的页面。
这种方法实现简单,直观,容易测试、调试,但不可避免地存在以下缺点:
1、很难重用,导致重复开发
有很多校验逻辑在整个网站中是相同的,比如上述的数字校验,还有email校验、长度校验等等,而通过覆盖validate方法很难对这些校验过程进行重用,除非定义一些helper类封装校验方法(比如上述的isNumber())。而当需要为另一个FormBean加入相同的校验逻辑时必须重复地覆盖validate方法
2、难于扩展
当要对一个表单增、删、改校验逻辑时必须修改validate方法,重新打包、部署
3、不可配置
因为校验逻辑硬编码于class文件中,运行时不可能做到灵活地配置校验逻辑
因此,Struts中加入了另一种更灵活的校验机制:
二、使用Validator
Validator提供了一种基于xml配置文件的校验模型,要使用这一模型必须做如下实现:
1、FormBean继承org.apache.struts.validator.ValidatorForm而不是ActionForm
2、不覆盖validate方法
3、创建validator-rules.xml及validation.xml文件
validator-rules.xml定义了可用来配置的校验逻辑,如:
1<form-validation>
2<global>
3<validatorname="required"
4classname="org.apache.struts.validator.FieldChecks"
5method="validateRequired"
6methodParams="java.lang.Object,
7org.apache.commons.validator.ValidatorAction,
8org.apache.commons.validator.Field,
9org.apache.struts.action.ActionMessages,
10org.apache.commons.validator.Validator,
11javax.servlet.http.HttpServletRequest"
12msg="errors.required"/>
13<validatorname="requiredif"
14classname="org.apache.struts.validator.FieldChecks"
15method="validateRequiredIf"
16methodParams="java.lang.Object,
17org.apache.commons.validator.ValidatorAction,
18org.apache.commons.validator.Field,
19org.apache.struts.action.ActionMessages,
20org.apache.commons.validator.Validator,
21javax.servlet.http.HttpServletRequest"
22msg="errors.required"/>
23<validatorname="validwhen"
24msg="errors.required"
25classname="org.apache.struts.validator.validwhen.ValidWhen"
26method="validateValidWhen"
27methodParams="java.lang.Object,
28org.apache.commons.validator.ValidatorAction,
29org.apache.commons.validator.Field,
30org.apache.struts.action.ActionMessages,
31org.apache.commons.validator.Validator,
32javax.servlet.http.HttpServletRequest"/>
33<validatorname="minlength"
34classname="org.apache.struts.validator.FieldChecks"
35method="validateMinLength"
36methodParams="java.lang.Object,
37org.apache.commons.validator.ValidatorAction,
38org.apache.commons.validator.Field,
39org.apache.struts.action.ActionMessages,
40org.apache.commons.validator.Validator,
41javax.servlet.http.HttpServletRequest"
42depends=""
43msg="errors.minlength"
44jsFunction="org.apache.commons.validator.javascript.validateMinLength"/>
45<validatorname="maxlength"
46classname="org.apache.struts.validator.FieldChecks"
47method="validateMaxLength"
48methodParams="java.lang.Object,
49org.apache.commons.validator.ValidatorAction,
50org.apache.commons.validator.Field,
51org.apache.struts.action.ActionMessages,
52org.apache.commons.validator.Validator,
53javax.servlet.http.HttpServletRequest"
54depends=""
55msg="errors.maxlength"
56jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/>
57<validatorname="mask"
58classname="org.apache.struts.validator.FieldChecks"
59method="validateMask"
60methodParams="java.lang.Object,
61org.apache.commons.validator.ValidatorAction,
62org.apache.commons.validator.Field,
63org.apache.struts.action.ActionMessages,
64org.apache.commons.validator.Validator,
65javax.servlet.http.HttpServletRequest"
66depends=""
67msg="errors.invalid"/>
68<validatorname="byte"
69classname="org.apache.struts.validator.FieldChecks"
70method="validateByte"
71methodParams="java.lang.Object,
72org.apache.commons.validator.ValidatorAction,
73org.apache.commons.validator.Field,
74org.apache.struts.action.ActionMessages,
75org.apache.commons.validator.Validator,
76javax.servlet.http.HttpServletRequest"
77depends=""
78msg="errors.byte"
79jsFunctionName="ByteValidations"/>
80<validatorname="short"
81classname="org.apache.struts.validator.FieldChecks"
82method="validateShort"
83methodParams="java.lang.Object,
84org.apache.commons.validator.ValidatorAction,
85org.apache.commons.validator.Field,
86org.apache.struts.action.ActionMessages,
87org.apache.commons.validator.Validator,
88javax.servlet.http.HttpServletRequest"
89depends=""
90msg="errors.short"
91jsFunctionName="ShortValidations"/>
92<validatorname="integer"
93classname="org.apache.struts.validator.FieldChecks"
94method="validateInteger"
95methodParams="java.lang.Object,
96org.apache.commons.validator.ValidatorAction,
97org.apache.commons.validator.Field,
98org.apache.struts.action.ActionMessages,
99org.apache.commons.validator.Validator,
100javax.servlet.http.HttpServletRequest"
101depends=""
102msg="errors.integer"
103jsFunctionName="IntegerValidations"/>
104<validatorname="long"
105classname="org.apache.struts.validator.FieldChecks"
106method="validateLong"
107methodParams="java.lang.Object,
108org.apache.commons.validator.ValidatorAction,
109org.apache.commons.validator.Field,
110org.apache.struts.action.ActionMessages,
111org.apache.commons.validator.Validator,
112javax.servlet.http.HttpServletRequest"
113depends=""
114msg="errors.long"/>
115<validatorname="float"
116classname="org.apache.struts.validator.FieldChecks"
117method="validateFloat"
118methodParams="java.lang.Object,
119org.apache.commons.validator.ValidatorAction,
120org.apache.commons.validator.Field,
121org.apache.struts.action.ActionMessages,
122org.apache.commons.validator.Validator,
123javax.servlet.http.HttpServletRequest"
124depends=""
125msg="errors.float"
126jsFunctionName="FloatValidations"/>
127<validatorname="double"
128classname="org.apache.struts.validator.FieldChecks"
129method="validateDouble"
130methodParams="java.lang.Object,
131org.apache.commons.validator.ValidatorAction,
132org.apache.commons.validator.Field,
133org.apache.struts.action.ActionMessages,
134org.apache.commons.validator.Validator,
135javax.servlet.http.HttpServletRequest"
136depends=""
137msg="errors.double"/>
138<validatorname="date"
139classname="org.apache.struts.validator.FieldChecks"
140method="validateDate"
141methodParams="java.lang.Object,
142org.apache.commons.validator.ValidatorAction,
143org.apache.commons.validator.Field,
144org.apache.struts.action.ActionMessages,
145org.apache.commons.validator.Validator,
146javax.servlet.http.HttpServletRequest"
147depends=""
148msg="errors.date"
149jsFunctionName="DateValidations"/>
150<validatorname="intRange"
151classname="org.apache.struts.validator.FieldChecks"
152method="validateIntRange"
153methodParams="java.lang.Object,
154org.apache.commons.validator.ValidatorAction,
155org.apache.commons.validator.Field,
156org.apache.struts.action.ActionMessages,
157org.apache.commons.validator.Validator,
158javax.servlet.http.HttpServletRequest"
159depends="integer"
160msg="errors.range"/>
161<validatorname="floatRange"
162classname="org.apache.struts.validator.FieldChecks"
163method="validateFloatRange"
164methodParams="java.lang.Object,
165org.apache.commons.validator.ValidatorAction,
166org.apache.commons.validator.Field,
167org.apache.struts.action.ActionMessages,
168org.apache.commons.validator.Validator,
169javax.servlet.http.HttpServletRequest"
170depends="float"
171msg="errors.range"/>
172<validatorname="doubleRange"
173classname="org.apache.struts.validator.FieldChecks"
174method="validateDoubleRange"
175methodParams="java.lang.Object,
176org.apache.commons.validator.ValidatorAction,
177org.apache.commons.validator.Field,
178org.apache.struts.action.ActionMessages,
179org.apache.commons.validator.Validator,
180javax.servlet.http.HttpServletRequest"
181depends="double"
182msg="errors.range"/>
183<validatorname="creditCard"
184classname="org.apache.struts.validator.FieldChecks"
185method="validateCreditCard"
186methodParams="java.lang.Object,
187org.apache.commons.validator.ValidatorAction,
188org.apache.commons.validator.Field,
189org.apache.struts.action.ActionMessages,
190org.apache.commons.validator.Validator,
191javax.servlet.http.HttpServletRequest"
192depends=""
193msg="errors.creditcard"/>
194<validatorname="email"
195classname="org.apache.struts.validator.FieldChecks"
196method="validateEmail"
197methodParams="java.lang.Object,
198org.apache.commons.validator.ValidatorAction,
199org.apache.commons.validator.Field,
200org.apache.struts.action.ActionMessages,
201org.apache.commons.validator.Validator,
202javax.servlet.http.HttpServletRequest"
203depends=""
204msg="errors.email"/>
205<validatorname="url"
206classname="org.apache.struts.validator.FieldChecks"
207method="validateUrl"
208methodParams="java.lang.Object,
209org.apache.commons.validator.ValidatorAction,
210org.apache.commons.validator.Field,
211org.apache.struts.action.ActionMessages,
212org.apache.commons.validator.Validator,
213javax.servlet.http.HttpServletRequest"
214depends=""
215msg="errors.url"/>
216<!--
217ThissimplyallowsstrutstoincludethevalidateUtilitiesintoapage,itshould
218notbeusedasavalidationrule.
219-->
220<validatorname="includeJavaScriptUtilities"
221classname=""
222method=""
223methodParams=""
224depends=""
225msg=""
226http://www.blogjava.net/Imag
分享到:
相关推荐
struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...
重写validate方法校验将会产生两种错误信息:Field级别错误信息,Action级别的错误信息 Field级别错误信息就是将错误信息添加到fieldErrors,也就是将错误信息添加到addFieldError方法中。 Action级别的错误信息...
主要为大家详细介绍了Java struts2 validate用户登录校验功能实现的具体步骤,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
struts2输入校验总结,struts2自带的校验器,以及校验器不能做的check的处理的总结
validate()可以指定校验范围内,或者是全局的 字段。而validateAll()只能校验全局。这篇文章主要介绍了vue+VeeValidate 校验范围(部分校验,全部校验) ,需要的朋友可以参考下
在Eclipse中配置Struts2项目(html)手把手教会你 如何在Eclipse中配置Struts2。 struts2 标签库介绍(html)对Struts2的标签做了详细的介绍让你轻松掌握Struts2的标签。 STRUTS2学习文档.pdf 对Struts2的一些配置...
struts提供了<html:errors/>标签来显示整个ActionErrors的错误信息。但要在struts-config.xml中设置<action ...
Struts2数据校验与国际化,有validate()方法校验,有validateXxx()方法校验,有配置文件校验;国际化:有英,香港,内地
在struts2里,完成登录页面,使用validate对输入数据进行校验,用户名必填,密码必填且长度大于6。
//验证身份证号码 jQuery.validator.addMethod("idCardNo", function (value, element) { //验证身份证号方法 var testIdCardNo = function (idcard) { ...jquery.validate的扩展校验身份证的方法。
输入校验之validateXXX方法校验的一个例子
详细介绍了struts2 的 validate方法对输入进行校验
主要介绍了Struts中使用validate()输入校验方法,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
Struts1.3.8使用validate 校验yyyyMM日期格式报错 博文链接:https://pharaohsprince.iteye.com/blog/234369
14 rangelength:[5,10] 输入长度必须介于 5 和 10 之间的字符串(汉字算一个字符)。 15 range:[5,10] 输入值必须介于 5 和 10 之间。 16 max:5 输入值不能大于 5。 17 min:10 输入值不能小于 10
Struts1.3 与1.2向比验证框架部分还是有所区别的,该例子通过一个简单的Email的校验,演示如何通过Struts Validate验证框架进行在页面中生成JavaScripte脚本,进行客户端校验。下完后记得评分,资源分就会回来,还能...
Struts2验证应该包括验证器(需要xml配置)和Action中的validate()验证方法两种。后者很简单,只需要把 验证条件加进去就可以啦!
主要介绍了Struts2中validate数据校验的两种方法及Struts2常用校验器,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
struts1.2 validate 源代码 实现 下载,myeclipse 下struts1.2框架下validate 表单验证,简单例子,功能已经实现
JQuery核心文件,JQuery的validate校验文件,validate校验messages_zh中文文件