在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 不懂

评论