Validator框架的第二个配置文件是validation.xml文件,这个文件是针对于某个具体Struts应用的,需
要开发人员来创建,它可以为应用中的ActionForm配置所需的验证规则,取代在ActionForm类中以编程
的方式来实现验证逻辑。
(form-validation)
(global)
(constant)
(constant-name)phone(/constant-name)
(constant-value)^\d{8}\d*$(/constant-value)
(/constant)
(global)
(formset)
(form name="checkoutForm"
(field
property="phone"
depends="required,mask,minlength")//此处没有配置(msg)说明在验证失败后,用
validato-rules中的消息文本。
(arg0 key="label.phone"/) //没有name属性,说明这个参数适合所有验证,它填充消息
文本的第一个参数{0}.在资源文件中定义label.phone=????
(arg1 name="minlength" key="$(var.minlength)" resource="false"/)//name属性说明
只对minlength验证有效,resource为false,说明消息填充用key属性值
(var)
(var-name)mask(/var-name)
(var-value)${Phone}(/var-value)
(/var)
(var)
(var-name)minlength(/var-name)
(var-value)7(/var-value)
(/var)
(/field)
(/form)
(/formset)
(/form-validation)
(form-validation)包含两个子元素:(global)和(formset),(global)元素中可以定义(constant)子元素
,它用来定义常量表达式,在文件的其余地方可以引用这些常量表达式,(formset)元素包含两个子元素
:(constant)(form).在(global)中定义的(constant)元素代表全局常量,而在(formset)元素中定义的
(constant)元素代表局部常量,后者只能在当前(formst)中使用。
(fiedl)元素的(msg)子元素指定验证规则对应的消息文本。该消息文本将代替在validator-rules.xml
文件中为验证规则配置的默认的消息文本,例如:
(field property="phone" depends="required,mask,minlength")
(msg name="mask" key="phone.invalidFormat"/)
.....
(/field)
以上代码的(msg)元素表明,当"mask"验证规则验证失败时,错误消息文本来自于ResourceBundle,消
息key为"phone.invalidformat".还有一个resource元素 当为true时,表示使用来自资源文件的消息,如
果为false,表示直接在KEY属性中设置消息文本,默认为true.
(field)元素可以包含四个附加的子元素:(arg0)(arg1)(arg2)(arg3),用于替换复合消息中的参数,
(arg0)元素指定第一个替换值,(arg1)指定第二个值,依次类推,每个arg元素包含三个属性:
name,key,resource,这些属性的用法和(msg)元素很相似.
validator插件
为了在struts框架中使用validator,可以采用插件机制把validator加入到框架中,这需要在struts
配置文件中配置validatorpluIn插件:
(plug-in className="org.apache.struts.validator.ValidatorPluIn")
(set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/)
(/plug-in)
Validator框架不能用于验证标准的 org.apache.struts.action.ActioForm类,如果要使用Validator框
架,应该采用ActionForm类的两个子类,org.apache.struts.validator.DynaValidatorForm和
org.apache.struts.validator.ValidatorForm. DynaValidatorForm支持在动态ActonForm中使用
Validator框架,ValidatorForm支持在ActionForm中使用Validator框架。这两种配置Validator框架的
方式都是一样的。
如果对表单验证有两种规则,则需要validatorForm的一个子类ValidatorActionForm,而它在
validation.xml文件中(form)元素的name属性对应struts 配置文件的(action)元素的path属性。而
ValidatorForm对应(action)元素的name属性
Validator框架不能用于 验证标准的 org.apache.struts.action.ActionForm类。如果要使用Validator
框架,应该采用ActionForm类的两个子类。org.apache.struts.validator.DynaValidatorForm和
org.apache.struts.validator.ValidatorForm.