5. Ciclo de vida Petición-Respuesta
1.- Reconstruir el Árbol de Componentes
Cuando se hace una petición para una página
JavaServer Faces, ej. pulsar un botón, la
implementación JavaServer Faces comienza el estado
Reconstruir el Árbol de Componentes.
Durante esta fase, la implementación JavaServer Faces
construye el árbol de componentes de la página
JavaServer Faces, conecta los manejadores de eventos
y los validadores y graba el estado en el FacesContext.
6. Ciclo de vida Petición-Respuesta
Ejemplo de árbol de componentes de una
pagina Jsp:
7. Ciclo de vida Petición-Respuesta
2 .- Aplicar Valores de la Petición
En esta etapa se recuperan los valores del request y se
asignan a los beans de la página.
El valor es almacenado localmente en el componente.
Si falla la conversión del valor, se genera un mensaje de
error asociado al componente y se pone en la cola de
FacesContext.
Si durante esta fase se produce algún evento, la
implementación JSF emite los eventos a los oyentes
interesados. (Listener).
8. Ciclo de vida Petición-Respuesta
3 .- Procesar Validaciones
Se verifican los parámetros de entrada según un conjunto de
reglas definidas en un fichero de configuración.
Se procesa todas las validaciones registradas con los
componentes del árbol.
Examina los atributos del componente que especifican las
reglas de validación y compara esas reglas con el valor local
almacenado en el componente.
Si el valor local no es válido, añade un mensaje de error al
FacesContext y el ciclo de vida avanza directamente hasta la
fase Renderizar las Respuesta para que la página sea dibujada
de nuevo incluyendo los mensajes de error.
9. Ciclo de vida Petición-Respuesta
4.- Actualizar los Valores del Modelo
Una vez determinado que el dato es
válido, pasa por el árbol de componentes
y configura los valores del objeto de
modelo correspondiente con los valores
locales de los componentes.
Los valores leídos y validados son
cargados en los beans.
10. Ciclo de vida Petición-Respuesta
5.- Invocar Aplicación
Se ejecutan las acciones y eventos solicitados para la página.
Si es necesario se realiza la navegación.
JSF maneja cualquier evento a nivel de aplicación, como enviar un
formulario o enlazar a otra página.
Si la aplicación necesita redirigirse a un recurso de aplicación Web
diferente o generar una respuesta que no contenga componentes
JSF, llamara a FacesContext.responseComplete.
Configura el árbol de componentes de la respuesta a esa nueva
página y transfiere el control a la fase Renderizar la Respuesta.
11. Ciclo de vida Petición-Respuesta
6 .- Renderizar la Respuesta
Se ejecutan las acciones y eventos solicitados
para la página. Si es necesario se realiza la
navegación.
Si se encontraron errores durante las fases
Aplicar los Valores a la Petición, Procesar
Validaciones o Actualizar los Valores del
Modelo, se mostrara la página original con los
mensaje de error que haya en la cola.
12. Ciclo de vida
Debido a las características extras de
JSF, el ciclo de vida ofrece diferentes
escenarios adicionales:
Escenarios de Procesamiento del Ciclo de
vida de una petición.
13. Escenarios del Ciclo de vida de una petición.
Soporta dos tipos diferentes de
respuestas y dos tipos distintos de
peticiones:
Se puede mezclar tanto paginas JSF y no
JSF, en función de la petición se origina la
respuesta.
14. Escenarios del Ciclo de vida de una petición.
Respuesta Faces:
Es una respuesta servlet que se genero
en la fase “renderizar la respuesta” del
ciclo de vida de procesamiento de la
respuesta.
Respuesta No-Faces:
Una respuesta generada por el servlet en
la que no se ha ejecutado la fase
“Renderizar la respuesta”.
15. Escenarios del Ciclo de vida de una petición.
Petición Faces:
Petición al servlet que fue enviada desde
una respuesta Face previamente
generada.
Petición No-Faces:
Una petición al servlet que fue enviada a
un componente de aplicación como un
servlet o una pagina Jsp, en vez de
directamente a un componente JSF.
16. Escenarios del Ciclo de vida de una petición.
Esta combinacion hace posible tres escenarios
del ciclo de vida.
Escenario 1: Una Petición No-Faces genera
una Respuesta Faces:
Un ejemplo de este escenario es cuando se pulsa un enlace de una
página HTML que abre una página que contiene componentes JSF.
Para dibujar una Respuesta Faces desde una petición No-Faces,
una aplicación debe proporcionar un mapeo FacesServlet en la
URL de la página que contiene componentes JSF.
FacesServlet accepta peticiones entrantes y pasa a la
implementación del ciclo de vida para su procesamiento. Restaurar
vista
17. Escenarios del Ciclo de vida de una petición.
•
Escenario 2: Una Petición Faces genera una
Respuesta No-Faces:
Cuando una aplicación JSF podría necesitar redirigir la salida a un
recurso diferente de la aplicación Web diferente o generar una
respuesta que no contiene componentes JSF.
En estas situaciones, el desarrollador debe saltarse la fase de
renderizado (Renderizar la Respuesta) llamando a
FacesContext.responseComplete.
FacesContext Contiene toda la información asociada con una
Petición Faces particular. Este método se puede invocar durante las
fases Aplicar los Valores de Respuesta, Procesar Validaciones o
Actualizar los Valores del Modelo.
18. Escenarios del Ciclo de vida de una petición.
•
Escenario 3: Una Petición Faces genera una
Respuesta Faces:
Escenario más común en el ciclo de vida de una
aplicación JSF.
Este escenario implica componentes JSF enviando una
petición a una aplicación JSF utilizando el FacesServlet.
Como la petición ha sido manejada por la
implementación JSF, la aplicación no necesita pasos
adicionales para generar la respuesta.
Todos los oyentes, validadores y conversores serán
invocados automáticamente durante la fase apropiada
del ciclo de vida estándar.
19. Resumen de escenarios
Petición JSF genera respuesta JSF:
Ciclo de vida completo
Petición no-JSF genera respuesta JSF:
Restaurar vista
Producir respuesta
Petición JSF genera respuesta no-JSF (ejemplo:
generar XML)
Restaurar vista
Aplicar valores de la petición
Procesar validaciones
Actualizar modelo
Invocar aplicación
Desvío a productor no-JSF
20. Resumen de Ciclo de vida
(generación de respuestas)
1. Crear o reusar árbol de componentes
2. Aplicar parámetros de la petición
3. Validar valores obtenidos y ejecutar
acciones de eventos de cambio de valor
4. Incorporar datos de la aplicación
5. Ejecutar acciones de eventos a nivel de
aplicación (botones, enlaces, etc)
6. Crear respuesta
En cada etapa se pueden generar eventos
21. Ciclo de vida de JSF
IndicThreads.com Java Meet June 2006
22. Ciclo de vida, II
1 Crear
5
Eventos
Aplicación
123
123
3 Validar
2
Pasar
4
Incorporar
6
HTML