Validator验证框架okWord文档下载推荐.docx
- 文档编号:18197516
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:18
- 大小:38.14KB
Validator验证框架okWord文档下载推荐.docx
《Validator验证框架okWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Validator验证框架okWord文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
元素。
<
元素可以包括一个或多个<
validator>
这些元素的DTD定义如下:
!
elementform-validation(global+)>
elementglobal(validator+)>
每个<
元素定义了一个唯一的验证规则。
例如,以下代码定义了一个名为“required”的验证规则:
validatorname="
required"
classname="
org.apache.struts.validator.FieldChecks"
method="
validateRequired"
methodParams="
java.lang.Object,
mons.validator.ValidatorAction,
mons.validator.Field,
org.apache.struts.action.ActionMessages,
mons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="
errors.required"
>
/validator>
元素有7个属性,
name
classname
method
methodParams
msg
depends
jsFunctionName
1.name属性
name属性指定验证规则的逻辑名,这个名字必须是惟一的。
2.classname和method属性
classname和method属性分别指定实现验证规则逻辑的类和方法。
例如,对于以上“required”验证规则,由FieldChecks类的validateRequired()方法来实现。
methodParams属性用来指定验证方法包含的参数,多个参数之间以逗号隔开。
3.msg属性
msg属性指定来自于ResourceBundle(本地资源文本文件)中的消息key(关键字)。
当验证失败时,Validator框架将根据这个消息key到ResourceBundle中查找匹配的消息文本。
默认情况下,Validator框架使用以下的消息文本:
errors.required={0}isrequired.
errors.minlength={0}cannotbelessthan{1}characters.
errors.maxlength={0}cannotbegreaterthan{1}characters.
errors.invalid={0}isinvalid.
errors.byte={0}mustbeabyte.
errors.short={0}mustbeashort.
errors.integer={0}mustbeaninteger.
errors.long={0}mustbealong.
errors.float={0}mustbeafloat.
errors.double={0}mustbeadouble.
errors.date={0}isnotadate.
errors.range={0}isnotintherange{1}through{2}.
errors.creditcard={0}isaninvalidcreditcardnumber.
errors.email={0}isaninvalide-mailaddress.
如果我们打算使用替换消息,应该把以上内容添加到应用的ResourceBundle中。
如果不打算使用以上默认的错误消息文本,可以修改validator-rules.xml文件中<
元素的msg属性,使它引用其它自定义的消息key;
或者也可以修改以上的错误消息文本。
4.depends属性
depends属性指定在调用当前验证规则之前必须先调用其它的验证规则。
例如,以下“minLength”验证规则的配置代码中就使用了depends属性:
minlength"
validateMinLength"
depends="
errors.minlength"
以上代码表示,在调用“minlength”验证规则之前,应该先调用“required”规则。
如果depends属性包含多个验证规则,则用逗号隔开,例如:
required,integer"
如果调用depends属性指定的验证规则时验证失败,就不会再调用下一个规则。
例如,如果被验证的数据未通过“required”验证规则,表示该数据根本不存在,就没有必要在调用“minLength”验证规则,来检查数据的长度是否大于或等于最小长度。
Validator框架提供了基本的、通用的验证规则,对Struts应用以及非Struts应用都适用。
monos.validator.GenericValidator类提供了一组实现这些规则的静态方法。
下表对这些方法作了说明。
GenericValidator类的验证方法
方法
描述
isBlankOrNull
验证字段是否为null,或者长度是否为0
isByte
验证字段是否可以被转换为有效的bytet类型的数据
isCreditCard
验证字段是否为有效的信用卡号
isDate
验证字段是否为有效的日期
isDouble
验证字段是否可以被转换为有效的double类型的数据
isEmail
验证字段是否为有效的E-Mail地址
isFloat
验证字段是否可以被转换为有效的float类型的数据
isInRange
验证字段是否介于最小值和最大值之间
isInt
验证字段是否可以被转换为有效的int类型的数据
isLong
验证字段是否可以被转换为有效的long类型的数据
isShort
验证字段是否可以被转换为有效的short类型的数据
matchRegexp
验证字段是否和正则表达式匹配
maxLength
验证字段是否小于或等于最大值
minLength
验证字段是否大于或等于最小值
在Struts框架中定义了专门用于验证表单字段的org.apache.struts.validator.FieldChecks类,它提供了和GenericValidator类似的方法。
以下是FieldChecks类包含的验证方法:
validateByte
validateCreditCard
validateDate
validateDouble
validateEmail
validateFloat
validateInteger
validateLong
validateMask
validateMinLength
validateMaxLength
validateRange
validateRequired
validateShort
FieldChecks类的validateMask()方法和matchRegexp()方法很相似。
validateMask()方法能够验证字段值是否和一个给定的Jakarta正则表达式(RegularExpression,简称RegExp)匹配。
正则表达式用于定义字符模式,例如:
“^[a-zA-Z]*$”表示字符串必须只包含字母;
“^\d{5}\d*$”表示字符串必须是5位数字。
FieldChecks类实现了具体的验证逻辑。
在对表单字段进行验证时,会调用FieldChecks类的相关方法,如果验证失败,就会创建包含错误消息的ActionMessage对象,并把该对象添加到ActionMessages集合对象中。
三、validaotion.xml文件
Validator框架的第二个配置文件为validation.xml文件。
这个文件是针对于某个具体Struts应用的,需要开发人员来创建,它可以为应用中的ActionForm配置所需的验证规则,取代在ActionForm类中以编程的方式来实现验证逻辑。
下图显示一个简单的validation.xml文件样例。
<
constant>
constant-name>
phone<
/constant-name>
constant-value>
^\d{8}\d*$<
/constant-value>
/constant>
/global>
formset>
formname="
checkoutForm"
fieldproperty="
phone"
depends="
required,mask,minlength"
<
arg0key="
label.phone"
/>
arg1name="
key="
${var:
minlength}"
resource="
false"
var>
var-name>
mask<
/var-name>
var-value>
${phone}<
/var-value>
/var>
minlength<
7<
/field>
/form>
/formset>
/form-validation>
1.<
元素
validation.xml文件的根元素为<
元素,它包含两个子元素:
和<
。
元素可以出现零次或多次,而<
元素可以出现一次或多次。
2.<
在<
元素中可以定义<
子元素,它用来定义常量表达式,在文件的其余地方可以引用这些常量表达式。
以下代码配置了两个<
元素:
^\d{7}\d*$<
zip<
^\d{6}\d*$<
以上代码定义了两个常量phone和zip,在<
formet>
元素中可以通过${constant-name}的形式来引用他们,例如访问phone常量的形式为${phone}。
3.<
元素包含两个子元素:
form>
可以出现零次或多次,<
元素有两个属性:
language和county。
language和county属性用于支持I18N(国际化)。
4.<
fom>
元素的<
子元素用于为表单配置验证规则,它的name属性指定了表单的名字。
元素可以有一个或多个<
field>
子元素。
5.<
子元素用于配置表单中字段的验证规则。
如上边的例子,对checkoutForm表单的phone字段配置了验证规则。
元素的属性作了描述。
属性
property
指定ActionFormBean中需要进行验证的字段的名字。
指定字段的验证规则,多个规则之间以逗号隔开。
6.<
msg>
子元素指定验证规则对应的消息文本。
该消息文本将替代在validator-rules.xml文件中为验证规则配置的默认的消息文本。
例如:
fieldproperty=”phone”depends=”required,mask,minlength”>
msgname=”mask”key=”phone.invalidformat”/>
……
以上代码的<
元素表明,当”mask”验证规则验证失败时,错误消息文本来自ResourceBundle,消息key为”phone.invalidformat”。
元素有三个属性。
指定验证规则的名字。
key
当resource属性为true时,key属性指定消息key,该消息key应该在ResourceBundle中存在,当resource属性为true时,key属性直接指定消息文本
resource
在此项为true时,表示使用来自ResourceBundle的消;
如果为false,表示直接在key属性中设置消息文本,默认值为true
7.<
arg>
元素可以包含4个附加元素;
arg0>
、<
arg1>
arg2>
arg3>
,用于替换符合消息中的参数。
元素指定第一个替换值,<
指定第二个值,依次类推。
每个arg元素包含三个属性:
name、key、resource,这些属性的用法和<
元素很相似。
下面的例子包含<
field
property=”phone”
depends=”required,mask,minlength”>
arg0key=”label.phone”/>
arg1name=”minlength”key=”${var:
minlength}”resource=”false”/>
以上代码没有配置<
元素,因此当某个验证规则验证失败时,将使用在validator-rules.xml中配置的默认消息文本。
例如,如果“minlength”验证规则失败,则validator-rules.xml中设置的消息key为“errors.minlength”:
validator
name=”minLength”
……
msg=”errors.minlength”>
在ResourceBundle中与“errors.minlength”匹配的中文消息文本为:
errors.minlength={0}不能少于{1}字符。
元素没有设置name属性,因此使用与所有验证规则,它将取代以上符合消息中的第一个参数{},{arg0}元素的key属性为”label.phone”,在ResourceBundle中与之匹配的中文消息文本为:
lable.phone=电话
元素的name属性为“minlength”,表示仅适用于“minlength”验证规则。
它将取代以上符合消息中的第二个参数{1}。
元素的resource属性为false,表明此时key属性直接指定文本。
key属性值由变量${var:
minlength}决定,此处值为7。
当“minlength”验证规则验证失败时,<
元素将分别取代以上符合消息中的两个参数,如图。
最后返回的错误信息为:
”电话号码不能少于7字符”。
8.<
元素还可以包含零个或多个<
元素用来向验证规则传递参数。
phone常量被传递给mask验证规则:
phone常量的值为“^\d{8}\d*$”,它定义了一种字符模式,表示字符串长度为8位,并且只能包含数字字符。
mask验证规则能够比较用户输入的phone字段是否合指定的字符模式匹配。
元素也可以访问<
元素,语法为${var:
var-name},例如:
<
四、Validator插件
为了在Struts框架中使用validator,可以采用插件机制把Validator加入到框架中。
这需要在Struts配置文件(struts-config.xml)中配置ValidatorPlugIn插件,代码如下:
plug-inclassName="
org.apache.struts.validator.ValidatorPlugIn"
set-property
property="
pathnames"
value="
/WEB-INF/validator-rules.xml,
/WEB-INF/validator/validation.xml"
/>
/plug-in>
当应用启动时,Struts框架会加载ValidatorPlugIn插件并调用它的init()方法。
init()方法根据pathnames属性加载相应的validator-rules.xml和validation.xml文件,把验证信息读入到内存中。
五、Validator框架和ActionForm
Validator框架不能用于验证标准的org.apache.struts.action.ActionForm类。
如果要使用Validator框架,应该采用ActionForm类的两个子类:
org.apache.struts.validator.DynaValidatorForm和org.apache.struts.validator.ValidatorForm。
DynaValidaotrForm支持在动态ActionForm中使用Validator框架,ValidatorForm支持在标准ActionForm中使用Validator框架。
无论是对于动态ActionForm还是标准ActionForm,配置Validator框架的方式都是一样的。
ValidatorForm有一个子类ValidatorActionForm。
Validator框架提供这两种类的目的在于可以更加准确地控制执行验证的条件。
例如,假定有个名为“editForm”的表单对应两个Action:
saveAction和cancleAction,如图所示。
假定editForm表单包含两个验证规则:
验证规则A和验证规则B。
如果对于用户的保存或取消动作,都要执行两个验证规则,则可以创建一个扩展ValidatorForm类的editForm类,然后再validator.xml中作如下配置:
formname=”editForm”>
验证
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Validator 验证 框架 ok