Проверка всего компонента JSF 2.3 отбрасывает все поля.Это предназначено?Я использую что-то не так? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть форма, скажем, 3 поля:

  • подсказка пароля
  • пароль
  • пароль снова

У меня есть bean-компонент, содержащий эти 3 поля, и у меня есть валидатор уровня класса, который проверяет, есть ли у bean-компонента совпадающее поле password и password again. Представьте себе довольно похожую установку, как это на https://github.com/AnghelLeonard/JSF-2.3/tree/master/JSF23ValidateWholeBeanExample

Проблема, с которой я сталкиваюсь, заключается в том, что я ввожу password hint, password и несоответствующий password again. В этом случае я очищаю всю форму, поскольку, как мне кажется, WholeBeanValidator не позволяет JSF сохранять какие-либо значения в модели. Соответствующее место кода находится в com.sun.faces.ext.component.WholeBeanValidator.validate (FacesContext, UIValidateWholeBean, Object) :

// Mark the components as invalid to prevent them from receiving
// values during updateModelValues
for (Entry<String, Map<String, Object>> validationCandidateEntry : validationCandidate.entrySet()) {
    invalidateComponent(validationCandidateEntry);
}

throw toThrow;

В этом случае я думаю, что было бы хорошо сохранить значения модели в полях и получить глобальное сообщение об ошибке. Однако значения не входят в боб. Я понимаю, что-то не так? Не могли бы вы помочь мне в этом @BalusC :)?

1 Ответ

0 голосов
/ 25 апреля 2019

Раздел Что нового в JSF 2.3?- Проверка bean-компонента уровня класса на веб-блоге Арджана Тиймса:

В JSF идея состоит в том, что модель не затрагивается при сбое проверки.

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

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

...