Применить значения запроса
- На этом этапе представленные значения поступают из параметра запроса. Затем значения запроса устанавливаются в базовый компонент, т.е. устанавливаются компоненты UIInput
Это не совсем правильно. Значения не заданы в базовых компонентах. Они установлены на компоненты. В основном, для каждого компонента UIInput
в дереве компонентов происходит следующее:
input.setSubmittedValue(request.getParameter(input.getClientId()));
Здесь input
равно UIInput
, а request
равно HttpServletRequest
.
Обновление значений модели
- На этом этапе обработанные значения передаются из базового компонента (UIInput) в управляемые компоненты. (Это наши пользовательские компоненты JSF).
Также не совсем правильно. UIInput
компоненты не являются компонентами поддержки. В основном, для каждого компонента UIInput
в дереве компонентов происходит следующее:
bean.setProperty(input.getValue());
Здесь bean-компонент и свойство основаны на привязке значений ввода, например value="#{bean.property}"
.
В целом, ваша путаница заключается в четком различении дерева компонентов JSF, базовых компонентов JSF и управляемых компонентов JSF. Дерево компонентов JSF - это то, которое вы определили на странице JSP / Facelets, и вы можете получить его по FacesContext#getViewRoot()
. Основными компонентами JSF являются классы Javabean, свойства которых связаны с деревом компонентов с использованием EL, например #{bean.property}
. Управляемые компоненты JSF являются конкретными примерами этих классов Javabean. Они могут быть областью запроса, сеанса или приложения (и в JSF 2.0 также просмотреть область). Это управляемые bean-компоненты, в которых значения фактически установлены и получены.
Смотри также