Разница между ValidatorForm и DynaValidatorForm - PullRequest
2 голосов
/ 09 декабря 2010

В чем разница между ValidatorForm и DynaValidatorForm?

1 Ответ

4 голосов
/ 10 декабря 2010

В чем разница между ValidatorForm и DynaValidatorForm?

Ответ на этот вопрос - фактически разница между ActionForm и DynaActionForm.

В Struts все знают ActionForm класс (так что я не буду об этом говорить).Но не все знают (или понимают цель - включая меня) DynaActionForm .

Идея DynaActionForms заключается в том, что вместо создания класса формы для каждой HTML-формы вы настраиваете один (вы объявляете их свойства, типы и значения по умолчанию в файле struts-config.xml).Знаете, это должен был быть микрофон "Dyna" ... но он оказался кое-чем, что никто не понимал и не использовал, и представляло некоторые серьезные недостатки:

  • они действуют как карта, так чтоу него те же проблемы с картами, как, например, получение данных с него, как с объектом, который вы затем должны разыграть.Таким образом, у вас есть приведения повсюду;
  • компилятор больше не уведомляет вас, когда вы напортачили, например, как имя свойства, так что ошибки компиляции превращаются в ошибки времени выполнения;
  • вещи не совсемдинамический, поскольку вам все равно придется перезагружать сервер после того, как вы «перенастроили» свойства в файле struts-config.xml (иначе изменения не будут выбраны);
  • завершение кода не работает на DynaActionForms,безопасность типов - отстой (здесь мы не берем дженерики) и есть другие неприятности, которые я сейчас не могу вспомнить.

Ну ... идея в том, что с точки зрения Struts,у вас есть два основных типа форм для работы: ActionForm и DynaActionForm (даже если DynaActionForm на самом деле является подклассом ActionForm).

Но у вас также есть плагин валидатора , в который вы помещаетеваши правила проверки во внешнем файле и заставить их забрать ваши формы действий.Вы подключаете плагин валидатора, используя дочерний элемент ActionForm: ValidatorForm.А поскольку у вас есть два типа форм, вы должны также подключить плагин валидатора для DynaActionForms: введите DynaValidatorForm.

В заключение, ValidatorForm и DynaValidatorForm - это одно и то же, но они применяются к разным "зверям".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...