Проверка ограничений проверки bean уровня класса в JSF
Похоже, что JSF 2.0 не вызывает "ограничения уровня класса". Цитирую из так ответьте
JSF 2.0 не вызывает ограничений проверки уровня класса. Из проверки JSF: JSF 2 обеспечивает встроенную интеграцию с ограничениями JSR-303. При использовании проверки бобов в приложении JSF автоматически использует ограничения для бобов, на которые ссылаются значения UIInput.
Кроме того, ответ предполагает использование поверхностей швов для проверки в любом случае, ограничения уровня класса.
К сожалению, это не вариант, так как он вводит несколько массивную зависимость для простой проверки того, что должно быть проверено в любом случае.
Мой вопрос таков:
Как я могу заставить JSF проверить ограничения уровня класса?
Ручная проверка в контроллере-это утомительно и много повторяющегося кода, и поэтому я хотел бы избежать этого варианта.
Я попытался сделать это, аннотируя контроллер-поле, чтобы быть проверено с помощью @Valid
, что не помогло.
Я предполагаю, что можно либо заставить фазу "процесс валидации "сделать это за меня, либо подключить что-то похожее на Filter
после фазы" обновление значений модели", которая будет централизованно запускать значения модели через валидацию.
1 ответ:
До предстоящего выпуска JSF 2.3, JSF не поддерживает проверку уровня класса с помощью a. o.
@Valid
. Это вечная проблема, учитывая, что самый первый выпуск спецификации JSF когда-либо обращается к этому.Ваш курорт либо использует стороннюю библиотеку, которая уже позаботилась о нем, либо создает его на основе источников рассматриваемой библиотеки с открытым исходным кодом (с учетом лицензирования).
Кроме поверхностей швов
<s:validateForm>
который вы уже нашли, есть также Омнифации<o:validateBean>
. Основное отличие по сравнению с<s:validateForm>
заключается в том, что он не использует JSFValidator
, но a JSR303ConstraintValidator
(и что у вас есть вся сущность сразу под рукой без необходимости объявлять и комментировать кучу полей, повторяя свойства сущности.Поддержка JSF 2.3 придет в аромате
<f:validateWholeBean>
который в значительной степени основан на OmniFaces<o:validateBean>
.