Struts1DynaValidatorForm和DynaValidatorActionForm的区别-飞外

1. 使用validation框架后,form必须从ValidatorForm中派生,同时必须在你的validate方法中先调用基类的validate方法。对于使用Dyna开头的方法来创建formbean的读者,你也必须改为以dyna开 头含有validator的form。

2. 注意DynaValidatorForm(ValidatorForm)和DynaValidatorActionForm(ValidatorActionForm)的区别。刚开始时从帮助中没看明白这2者的区别,后来从网上一篇文章中得到了用法的区别。前者主要的视角是formbean,而后者的视角是action。

当formbean被不同的action使用时,对于不同的action而言,使用的formbean的属性集合有大有小。此时 如果仍然以formbean为主体,会造成其他action的不正常使用。因此,struts中提出了DynaValidatorActionForm(ValidatorActionForm)。此时在validation.xml中的form标签的name属性改为action的path属性,又由于action中有attribute和name属性,validation框架就可根据这个action得到对应的formbean。例子:


 formset 

form

field property="city"

depends="required"

arg0 key="prompt.city"/

/field

/form

form

field property="state"

depends="required"

arg0 key="prompt.state"/

/field

/form

/formset



3. 与DispatchAction的配合。Struts1.1的DispatchAction使得相关的Action的关系紧密,大大减少了应用中Action的个数,但是随之而来 也带来了使用Validation框架的不便,不能不说是一个遗憾。读者也许认为这种情况可以使用面验证的开发效率,更吸引人的是这些验证方法可通过自定义的validator来得到复用。使得这些验证代码更加集中,可维护性得到加强。当然随着项目的进行,validation.xml和validator-rules.xml会随之增长,这部分的维护工作加重了。