Этап 2: Применить значения запроса - На этом этапе каждый компонент в представлении будет искать свои значения в запросе и устанавливать для них новые значения
Хм, хорошо, хорошо. Таким образом, представление будет построено из-за предыдущих параметров Beans. После этого есть частичное представление, сгенерированное со значениями запроса. (Верно? Позже, в фазе 3 ° они будут сравниваться). Но, например, если значения в списке запросов отсутствуют при создании этого последнего представления? Значения будут нулевыми?
В основном следующее происходит под покровом (здесь input
это UIInput
и request
это HttpServletRequest
):
if (input.isRendered()) {
String value = request.getParameter(input.getClientId());
if (value != null) {
input.setSubmittedValue(value);
}
}
Таким образом, они не будут затронуты, если нет параметра запроса. Они не будут установлены с null
и будут сохранены по умолчанию.
Фаза 5: Вызов приложения - После того, как все значения запроса будут успешно установлены для компонента поддержки, будут обработаны события действия, поставленные в очередь на этапе применения значений запроса. В нашем случае метод действия кнопки отправки.
Это не совсем понятно. На данный момент у меня есть (на бобах) значения, обновленные с предыдущей фазы (если проверка и запрос на применение не провалились). Итак, что теперь происходит? Что означает, что события действия, поставленные в очередь на этапе применения значений запроса, будут обрабатываться? Это означает, что, например, если действие Отправить, процесс завершен? Вот почему вызов ajax, если он не обработан в фазе 2 °, не будет выполнен? Или где это терпит неудачу?
На втором этапе в основном также произойдет следующее (здесь command
равно UICommand
, request
равно HttpServletRequest
и ActionEvent
равно ActionEvent
):
if (command.isRendered()) {
String value = request.getParameter(command.getClientId());
if (value != null) {
command.queueEvent(new ActionEvent(command)); // Queue for INVOKE_ACTION.
}
}
Затем во время фазы вызова приложения будут вызываться все события, поставленные в очередь для конкретной фазы.
Этап 6: ответ на визуализацию - На этом этапе дерево компонентов будет отображаться для клиента.
Это означает, что представление на сервере обновляется с использованием обновленных значений bean-компонентов? И, после этого, HTML-код создается из этого представления? Или просто сделал HTML-код и сохрани статус просмотра?
На этом этапе JSF проходит по дереву компонентов, и все компоненты будут закодированы (вызовет Renderer
всех компонентов, по умолчанию средство визуализации HTML). Во время кодирования значения будут просто получены из модели. Сам вид не будет обновлен. В основном
facesContext.getViewRoot().encodeAll();