2010-12-08 51 views

Répondre

4

Quelle est la différence entre ValidatorForm et DynaValidatorForm?

La réponse à ceci est en fait la différence entre ActionForm et DynaActionForm. Dans Struts, tout le monde connaît la classe ActionForm (donc je ne vais pas en parler). Mais tout le monde ne sait pas (ou comprend le but de - moi inclus) le DynaActionForm. L'idée derrière DynaActionForms est qu'au lieu de créer une classe de formulaire pour chaque formulaire HTML, vous en configurez un (vous déclarez leurs propriétés, types et valeurs par défaut dans le fichier struts-config.xml). Il était censé être micro « Dyna » tu sais ... mais avéré être quelque chose que personne n'a compris ou utilisé et présenté quelques inconvénients majeurs:

  • ils agissent un peu comme une carte il a le même problèmes de cartes, comme la récupération de données, vous savez, comme un objet que vous devez ensuite lancer. Donc vous avez des castes partout;
  • Le compilateur ne vous avertit plus lorsque vous vissez quelque chose comme un nom de propriété par exemple, donc les erreurs de compilation se transforment en erreurs d'exécution;
  • les choses ne sont pas vraiment dynamiques puisque vous devez encore redémarrer le serveur après avoir "reconfiguré" les propriétés dans le fichier struts-config.xml (sinon les modifications ne seront pas récupérées);
  • l'achèvement de code ne fonctionne pas sur DynaActionForms, le type de sécurité craint (nous ne prenons pas de génériques ici) et il y a d'autres nuisances dont je ne me souviens pas maintenant.

Eh bien ... l'idée est que, d'un point de vue Struts, vous avez deux principaux types de formulaires à traiter: ActionForm et DynaActionForm (même si le DynaActionForm est en fait une sous-classe de ActionForm).

Mais vous avez également le validator plugin où vous placez vos règles de validation dans un fichier externe et les faites ramasser par vos formulaires d'action. Vous raccordez le plug-in validator en utilisant un enfant de ActionForm: le ValidatorForm. Et puisque vous avez deux types de formulaires, vous devez aussi connecter le plugin validateur pour DynaActionForms: entrez DynaValidatorForm. En conclusion, ValidatorForm et DynaValidatorForm sont la même chose mais appliqués à différentes "bêtes".