O Ciclo de Vida das Requisições no JavaServer Faces

Spread the love

De acordo com a especificação da arquitetura JSF, toda requisição possui um ciclo de vida, em que cada requisição é tratada de uma maneira. Existem seis diferentes fases, entretanto nem toda requisição percorre todas elas. Dependendo do tipo de requisição, ou ações a serem executadas, algumas fases simplesmente são puladas. A Figura abaixo representa o ciclo de vida de uma requisição no JSF.

Após uma requisição o JSF restaura uma cópia da página do cliente armazenada no FacesContext, no lado servidor ou cria uma nova página caso ela ainda não exista. Essa fase é chamada de Restore View (Restaurar a Visão). Após essa fase o JSF atualiza os valores da página  do servidor com os novos valores dos componentes da página do cliente, como por exemplo, valores de campos de formulários, cookies etc. Essa fase é chamada de Apply Request Values (Aplicar Valores da Requisição).

Figura 6 – O Ciclo de Vida das Requisições no JavaServer Faces

Adaptado de: GEARY & HORSTMANN, 2010

Após as fases anteriores é iniciada a fase Process Validations (Processar Validações) nela é feita a conversão e/ou a validação dos novos valores dos componentes. Por exemplo, na página do cliente quando ele digita uma data em um <p:inputCalendar>,  este valor é atribuído como String  ao componente, antes deste valor ser atribuído à sua classe Java correspondente é necessário convertê-lo para o tipo Date. A validação de campos também é efetuada nessa fase, por exemplo, a validação de um e-mail ou se uma data final não é menor que a data inicial. Logo em seguida ocorre a Update Model Values (Atualização os Valores do Modelo) fase na qual os valores dos componentes enviados pelo cliente são atribuídos às classes Java correspondentes.

Posteriormente ocorre a fase Invoke Application (Invocar a Aplicação) nela os métodos (action ou actionListener) dos botões e links que estão configurados nos formulários da página do cliente são finalmente invocados. Nessa fase todos os valores já estão convertidos e validados, e é possível manipular todos os dados inseridos pelo usuário.

Por fim, a Render Response (Renderizar a resposta) última fase do ciclo de vida do JSF é executada e todos os componentes são exibidos com seu estado corrente atualizado. Nessa etapa o estado da view é salvo no objeto FacesContext para a próxima requisição ou para operações no lado do servidor. Dessa forma o processamento da requisição termina e a resposta é renderizada. Além dessas seis fases existem outras subfases menores mas que não é tão relevante explicá-las neste post.

Treinamentos relacionados com este post









Referências:

GEARY, David; HORSTMANN, Cay. Core JavaServer faces. 3ed. Redwood Shores: Prentice Hall, 2010.

Leandro

Leandro da Costa é especialista em inteligência artificial on-premise e desenvolvedor de software desde 2010, com mais de 15 anos de experiência em projetos nacionais e internacionais para empresas como Thomson Reuters, Unilever, PagSeguro e Hub Fintech, além de órgãos como CNPq, Ministério da Saúde e Ministério da Justiça. Trabalho com Java, Python, Kotlin, JavaScript, microsserviços, cloud (AWS, Azure, GCP) e Docker/Kubernetes — sempre em times ágeis, muitas vezes distribuídos globalmente. Já enfrentei desafios reais de escalabilidade e performance, como a modernização do sistema de análise de crédito do PagSeguro, onde reduzi o tempo de resposta de mais de 1 minuto para menos de 15 segundos. Sou Instrutor Parceiro na Udemy desde 2021 — reconhecimento concedido aos 200 melhores instrutores do mundo — com mais de 65.000 alunos em 136 países. Minha missão é compartilhar conhecimento validado na prática, ajudando desenvolvedores a acelerar suas carreiras e conquistar melhores oportunidades. Fora do teclado, gosto bastante de viajar além de esportes de aventura: rapel, tirolesa e trilhas. Apreciador de cervejas, fã de Rock'n Roll, ficção científica e geopolítica. Atualmente atuo como consultor na Erudio Training.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *