在struts1.2中要实现上述的两个字段比较功能可以用validwhen验证。方法如下:
<form-validation>
<formset>
<form name="RegistrationForm">
<field property="emailAddress"
depends="required,email">
<arg key="prompt.emailAddress"/>
</field>
<field property="password"
depends="required">
<arg key="prompt.password"/>
</field>
<field property="password2"
depends="required,validwhen">
<arg position="0" key="prompt.password2"/>
<arg position="1" key="prompt.password"/>
<msg name="validwhen" key="error.password.match"/>
<var>
<var-name>test</var-name>
<var-value>(*this* == password)</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
n 用validator框架进行验证时的一个问题是这个验证过程是封装了的,有时候你需要在验证中加入自己的操作,这时候可以通过扩展ValidatorForm和DynaValidatorForm来实现。
拓展响应的FormBean,然后覆盖其validate()方法,在方法的开头调用super.validate()方法,然后就可以追加自己的操作了。
如果是静态的ValidatorForm和ValidatorActionForm则在
validate()方法的开头调用super.validate()方法,然后就可以追
加自己的操作了。
如果是动态的DynaValidatorForm和DynaValidatorActionForm,
则除了跟静态的一样操作外,将struts-config.xml中的form-bean
元素的type属性修改为你自定义的那个扩展类。
n 本地化验证
使用formset元素的language、country和variant属性可以将验证与指定的国家和语言相关联。
首先定一个适合所有国家和语言的全局formset:
<formset>
<form name="LocalizedForm">
<field property="employeeId"
depends="required">
<arg key="prompt.employeeId"/>
</field>
<field property="hourlyRate"
depends="required,mask">
<arg key="prompt.hourlyRate"/>
<var>
<var-name>mask</var-name>
<var-value>^\d+\.\d{2}$</var-value>
</var>
</field>
</form>
</formset>
然后定义一个指定国家或语言的formset:
<formset language="fr">
<form name="LocalizedForm">
<field property="hourlyRate"
depends="required,mask">
<arg key="prompt.hourlyRate"/>
<var>
<var-name>mask</var-name>
<var-value>^\d+,\d{2}$</var-value>
</var>
</field>
</form>
</formset>
本地属性有以下三种:
1. language
2. country
3. variant
执行时,struts根据locale对象查找对应formset。他先查找country和language,如果不匹配则只查找language。
n indexedListProperty 不懂
n page 不懂
评论