ValidatorForm和DynaValidatorForm之间的区别

时间:2010-12-08 23:05:41

标签: struts

ValidatorForm和DynaValidatorForm有什么区别?

1 个答案:

答案 0 :(得分:4)

  

ValidatorForm和DynaValidatorForm有什么区别?

答案实际上是ActionForm和DynaActionForm之间的区别。

在Struts中,每个人都知道ActionForm类(所以我不会谈论它)。但并非每个人都知道(或理解 - 包括我的目的)DynaActionForm

DynaActionForms背后的想法是,不是为每个HTML表单创建一个表单类,而是配置一个(在struts-config.xml文件中声明它们的属性,类型和默认值)。它应该是你所知道的“Dyna”麦克风......但结果却是一些没有人理解或使用过的东西,并带来了一些主要的缺点:

  • 它们有点像地图,所以它有相同的地图问题,比如从它中检索数据,你知道,然后你必须投射一个对象。所以你到处都有演员阵容;
  • 编译器在你搞砸了某些东西时不再通知你,比如属性的名称,所以编译错误会变成运行时错误;
  • 事情并非真正动态,因为在“重新配置”struts-config.xml文件中的属性后仍需要重新启动服务器(否则将无法修改);
  • 代码完成不适用于DynaActionForms,类型安全很糟糕(我们这里没有使用泛型),还有其他令人讨厌的麻烦,我现在还记不起来。

嗯......从Struts的角度来看,你有两种主要的表单来处理:ActionForm和DynaActionForm(即使DynaActionForm实际上是ActionForm的子类)。

但您也有validator plugin,您可以将验证规则放在外部文件中,并通过您的操作表单提取。您通过使用ActionForm的子项:ValidatorForm来连接验证器插件。由于您有两种类型的表单,您还必须连接DynaActionForms的验证器插件:输入DynaValidatorForm。

总之,ValidatorForm和DynaValidatorForm是相同的东西,但适用于不同的“野兽”。