В чем разница между 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 - это одно и то же, но они применяются к разным "зверям".