У меня есть форма обновления, с составными ключами Все составные клавиши отображаются в поле ввода, поскольку у меня есть скрытое поле для каждого составного ключа. Эти значения выходных данных пусты после ошибки проверки. Как это решить. Я на той же странице, поэтому он не должен иметь значения.Ошибка проверки JSF, потерянное значение
ответ
Это действительно неинтуитивное поведение h:inputHidden
(я когда-либо подавал issue против него в списке выпусков Mojarra, но они ничего не делали с ним). Вся проблема состоит в том, что значение компонента необязательно равно также, принятое во весь цикл проверки, в то время как нет средств ввода, управляемого пользователем. Он потеряется, когда проверка не удалась. Есть как минимум три способа исправить это неинтуитивное поведение.
Первый способ заключается в использовании binding
на h:inputHidden
вместо:
<h:inputHidden binding="#{bean.hidden}" />
Таким образом, значение не претерпит ненужный цикл проверки. Однако это требует изменений в способе получения/установки значений в коде компонента резервного копирования. Например:
private HtmlInputHidden hidden = new HtmlInputHidden(); // +getter +setter.
public void setHiddenValue(Object hiddenValue) {
hidden.setValue(hiddenValue);
}
public Object getHiddenValue() {
return hidden.getValue();
}
Второй (и имхо предпочтительный способ) заключается в использовании Tomahawk «ы t:saveState
вместо этого.
<t:saveState value="#{bean.property}" />
Главное преимущество заключается в том, что вам не нужно ничего менять в коде бэкэнда. Он восстановит значение раньше, чем будет применяться фаза запроса заявки. Вам нужно только добавить дополнительные библиотеки, если это еще не сделано, но поскольку Tomahawk предоставляет гораздо больше преимуществ, чем только t:saveState
, например, в основной реализации JSF отсутствуют компоненты/функции t:inputFileUpload
, t:dataList
, t:dataTable preserveDataModel="true"
, t:selectOneRadio layout="spread"
и т. Д., Это стоит того усилия.
Третий способ заключается в том, чтобы сохранить его в компоненте, включенном в сеанс, но на самом деле вы не хотите делать это для переменных области запроса. Это даст только "wtf?" когда конечный пользователь имеет несколько вкладок/окон, открытых в одном сеансе.
- 1. jsf переменная потерянное значение
- 2. JSF преобразователя: Ошибка проверки: недопустимое значение
- 3. JSF convertDateTime ошибка проверки
- 4. JSF bypass selectOneMenu Ошибка проверки
- 5. JSF с ENUM «Ошибка проверки: Значение не является действительным»
- 6. Ошибка проверки: Значение не является действительным в JSF
- 7. Потерянное значение переменных
- 8. Обновить JSF до проверки
- 9. потерянное значение по коду за
- 10. Значение, потерянное после присвоения указателем
- 11. Локализованные проверки подлинности JSF
- 12. JSF проверки для DataTable
- 13. Ошибка NSURLConnection "потерянное сетевое соединение"?
- 14. jsf ошибка переадресации jsf ошибка
- 15. Ошибка проверки :: Значение недействительно в меню выбора
- 16. сообщение проверки JSF
- 17. Контроллер проверки JSF 2.0
- 18. Форма диалога проверки JSF
- 19. JSF Разноплановость проверки NullPointerException
- 20. Ошибка проверки JSF из компонента, который не отображается
- 21. Ошибка проверки на значение rel
- 22. Знаменитая ошибка проверки: значение недействительно
- 23. W3C Ошибка проверки: Плохо значение
- 24. Значение статической переменной, потерянное в IIS6
- 25. Значение переменной javascript, потерянное при внешнем объекте
- 26. function_object потерянное значение элемента данных после for_each
- 27. значение сеанса, потерянное при загрузке страницы
- 28. OpenCL потерянное значение переменных из-за-петли
- 29. Как получить старое значение из проверки подлинности JSF/ADF?
- 30. JSF Dropdowns - Принудительное значение non-defautl для проверки