Выбор переключателя JSF passthrough сбрасывается при ошибках проверки формы
У меня есть форма JSF 2.2, состоящая из текстового поля ввода и пары встроенных переключателей. Учитывая известные ограничения на группы переключателей в JSF 2.2, я использую метод, описанный BalusC в этом сообщении в блоге. Мы не можем перейти на JSF 2.3, так как это приложение Weblogic, и в настоящее время мы заблокированы на Weblogic 12.2 (JavaEE 7).
Хотя этот метод отлично работает при отправке действительной формы, проблема заключается в том, что при отправке недопустимой формы выбор переключателя пользователя теряется и он сбрасывается до последнего допустимого значения (или начального значения).
Вот пример того, как я определяю пару переключателей, используя
h:inputHidden
элемент и связывание его
binding
атрибут с
name
атрибуты отдельных переключателей (для идентификатора их группы).
Как я могу сохранить выбор переключателя пользователя в случае отправки недопустимой формы? Модель никогда не обновляется с их выбором. Другие элементы формы сохраняют свои значения при отправке формы, даже если существуют ошибки проверки. Как я могу заставить свою группу переключателей вести себя одинаково?
1 ответ
Действительно,
checked
атрибут сравнивает значение модели напрямую.
pt:checked="#{modelBean.heightUnit eq 'CENTIMETERS' ? 'checked' : null}"
Значение модели обновляется во время
UPDATE_MODEL_VALUES
этап, но он не будет выполнен, если во время проверки возникнет ошибка проверки.
PROCESS_VALIDATIONS
фаза.
По сути, вы хотите проверить отправленное значение вместо значения модели. Это уже покрыто логикой позади
UIInput#getValue()
. В вашем конкретном случае вы хотите сравнить со значением
<h:inputHidden>
вместо.
pt:checked="#{hiddenHeightUnitSelection.value eq 'CENTIMETERS' ? 'checked' : null}"
Тем временем статья в блоге, на которую есть ссылка в вашем вопросе, была обновлена.