【问题标题】:Difference between ValidatorForm and DynaValidatorFormValidatorForm 和 DynaValidatorForm 的区别
【发布时间】:2010-12-08 23:05:41
【问题描述】:

ValidatorForm 和 DynaValidatorForm 有什么区别?

【问题讨论】:

    标签: struts


    【解决方案1】:

    ValidatorForm和DynaValidatorForm有什么区别?

    这个问题的答案其实就是 ActionForm 和 DynaActionForm 的区别。

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

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

    • 它们的行为有点像地图,因此它具有与地图相同的问题,例如从中检索数据,你知道,作为一个对象,然后你必须强制转换。所以你到处都有演员表;
    • 编译器不再在您搞砸诸如属性名称之类的事情时通知您,因此编译错误会变成运行时错误;
    • 事情并不是真正动态的,因为在“重新配置”struts-config.xml 文件中的属性后,您仍然需要重新启动服务器(否则修改不会被拾取);
    • 代码完成在 DynaActionForms 上不起作用,类型安全很糟糕(我们在这里不采用泛型),还有其他一些我现在不记得的麻烦事。

    嗯...这个想法是,从 Struts 的角度来看,您需要处理两种主要类型的表单:ActionForm 和 DynaActionForm(即使 DynaActionForm 实际上是 ActionForm 的子类)。

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 2013-08-07
      • 2011-10-20
      • 2020-01-23
      • 1970-01-01
      • 2014-10-09
      • 2010-12-21
      • 2011-05-11
      相关资源
      最近更新 更多