Проверка ограничений проверки bean уровня класса в JSF


Похоже, что JSF 2.0 не вызывает "ограничения уровня класса". Цитирую из так ответьте

JSF 2.0 не вызывает ограничений проверки уровня класса. Из проверки JSF: JSF 2 обеспечивает встроенную интеграцию с ограничениями JSR-303. При использовании проверки бобов в приложении JSF автоматически использует ограничения для бобов, на которые ссылаются значения UIInput.

Кроме того, ответ предполагает использование поверхностей швов для проверки в любом случае, ограничения уровня класса.

К сожалению, это не вариант, так как он вводит несколько массивную зависимость для простой проверки того, что должно быть проверено в любом случае.

Мой вопрос таков:

Как я могу заставить JSF проверить ограничения уровня класса?

Ручная проверка в контроллере-это утомительно и много повторяющегося кода, и поэтому я хотел бы избежать этого варианта.

Я попытался сделать это, аннотируя контроллер-поле, чтобы быть проверено с помощью @Valid, что не помогло.

Я предполагаю, что можно либо заставить фазу "процесс валидации "сделать это за меня, либо подключить что-то похожее на Filter после фазы" обновление значений модели", которая будет централизованно запускать значения модели через валидацию.

1 3

1 ответ:

До предстоящего выпуска JSF 2.3, JSF не поддерживает проверку уровня класса с помощью a. o. @Valid. Это вечная проблема, учитывая, что самый первый выпуск спецификации JSF когда-либо обращается к этому.

Ваш курорт либо использует стороннюю библиотеку, которая уже позаботилась о нем, либо создает его на основе источников рассматриваемой библиотеки с открытым исходным кодом (с учетом лицензирования).

Кроме поверхностей швов <s:validateForm> который вы уже нашли, есть также Омнифации <o:validateBean>. Основное отличие по сравнению с <s:validateForm> заключается в том, что он не использует JSF Validator, но a JSR303 ConstraintValidator (и что у вас есть вся сущность сразу под рукой без необходимости объявлять и комментировать кучу полей, повторяя свойства сущности.

Поддержка JSF 2.3 придет в аромате <f:validateWholeBean> который в значительной степени основан на OmniFaces <o:validateBean>.