Разница между значениями запроса на применение и обновлениями модели - PullRequest
9 голосов
/ 20 января 2011

У меня часто возникают сомнения по поводу этих двух фаз.Я понимаю следующее:

  1. Применить значения запроса

    • На этом этапе представленные значения поступают из параметра запроса.Затем значения запроса устанавливаются в базовый компонент, т.е. устанавливаются компоненты UIInput
  2. Обновление значений модели

    • InНа этом этапе обработанные значения передаются из базового компонента (UIInput) в управляемые компоненты.(Это наши пользовательские компоненты JSF).

Я думаю, что мое понимание верно.Но чтение нескольких статей приводило меня в замешательство.Я хочу разъяснить мне эти два этапа.Пожалуйста, уточните меня.

1 Ответ

19 голосов
/ 20 января 2011

Применить значения запроса

  • На этом этапе представленные значения поступают из параметра запроса. Затем значения запроса устанавливаются в базовый компонент, т.е. устанавливаются компоненты 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-компоненты, в которых значения фактически установлены и получены.

Смотри также

...