Как сохранить состояние после проверки? (ValidateWholeBean)

Я использую <f:validateWholeBean> тег (JSF 2.3) для проверки на уровне класса.

Проверка выполняется правильно, однако данные формы удаляются после возврата сообщений с ошибками проверки.

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

1 ответ

Я смог решить мою проблему с помощью <o: validateBean value =" # {bean.product} "/> тег omnifaces в сочетании с атрибутом метода " validateActual ". Заявленное поведение как недостаток в документации идеально для меня.

Если стратегия копирования невозможна из-за технических ограничений, вы можете установить атрибут метода в " validateActual ".

<o:validateBean value="#{bean.product}" validationGroups="com.example.MyGroup" method="validateActual" />

Это обновит значения модели и выполнит проверку после фазы обновления значений модели вместо фазы проверки. Недостатком является то, что недопустимые значения остаются в модели и что метод действия в любом случае вызывается. Вам потребуется дополнительная проверка для FacesContext.isValidationFailed() в методе действия, чтобы увидеть, провалился ли он или нет.

http://showcase.omnifaces.org/validators/validateBean

Другие вопросы по тегам