Olá desenvolvedores, hoje falaremos sobre o ciclo de vida do JSF – JavaServer Faces cujo desenvolvimento de aplicações até é possível sem conhece-lo, mas certamente sem benefício de todo o poder do JSF, que o domínio do framework em todas as suas nuances traz. Assim, é importante que você o conheça, pois além de lhe conferir maior produtividade, será extremamente útil no desenvolvimento de aplicações avançadas.

Entender o ciclo de vida do JSF permitirá ainda que você conheça melhor o framework e dessa forma seja capaz de implementar recursos avançados com relativa facilidade.

Quando executamos uma página desenvolvida com JSF, para que tudo funcione corretamente alguns processos precisar ser executados, etapas precisam ser processadas. Conhecê-las é o propósito deste tutorial.

Assim, se uma requisição HTTP de qualquer aplicação web é realizada pelo cliente, o servidor responde em uma página traduzida para HTML. E quando esta requisição é feita por uma página JSF, é preciso ainda que os componentes sejam convertidos e validados. Mas não apenas isso, esses componentes são propagados para o Beans de forma ordenada.

Desse modo, para entender melhor como tudo isso funciona, você precisará compreender o ciclo de vida do JSF. Isto é, as etapas pelas quais o componente deverá passar, compreendidas entre a requisição e a resposta. Fases estas que podem ser divididas em seis etapas.

ETAPA 1: RESTORE VIEW

A primeira etapa ou primeiro passo é a restauração da visão ou restore view. Esta é a etapa responsável pela recuperação ou criação da “view” também conhecida como árvore de componentes UI – User Interface. É a recuperação da hierarquia de componentes para a página solicitada. Ou de forma mais simplificada são as validações dos dados de entrada dos componentes da view – que é a página para qual estas validações foram solicitadas.

ETAPA 02: APPLY REQUEST VALUES

Nesta etapa são aplicados os valores da requisição, onde cada componente tem a possibilidade de atualizar seu estado com as informações que vieram da requisição. Valores estes que são aplicados ao componente em memória, e não a propriedade da classe bean para qual ele aponta. Neste interim, se necessário, algumas conversões serão realizadas.

ETAPA 03: PROCESS VALIDATIONS

Nesta etapa é onde as validações são processadas. Desse modo os valores que vieram da etapa anterior, em que os valores da requisição são aplicados, são validados junto com os valores que foram declarados no “bean”. Neste caso estamos falando dos validadores, como por exemplo, um campo de data, ou de valor monetário.

Nesta etapa, se por exemplo, se tratar de um campo de data, quando a data é informada o validador entra em ação. Assim, se a data informada for incompatível, isto é, se algum de erro de conversão ou de validação ocorrer, todas as fases posteriores serão ignoradas e a fase de renderização da resposta é invocada.

E é mostrada ao usuário uma página para que ele possa corrigir o erro e submeter a página novamente.

ETAPA 04: UPDATES MODEL VALUES

Nesta etapa ocorre a validação do valor do modelo, aqui os valores já estão validados e atribuídos aos respectivos componentes na classe Bean. Em outras palavras, se for uma aplicação de cadastro, significa que os valores informados serão atribuídos ao objeto.

ETAPA 05: INVOKE APLICATION

Esta é a etapa responsável por realizar as chamadas das funções de ação, onde os métodos serão invocados. Ou ainda, é onde acontece a manipulação de qualquer evento da aplicação. Seja este evento o envio de um formulário, um dado que precisa ser salvo no banco de dados ou a chamada para uma outra página.

ETAPA 06: RENDER RESPONSE

E por fim ocorre o processamento da página que será apresentada ao usuário. Nesta fase, cada componente de tela que têm suas propriedades, comportamentos e forma, fará a geração do próprio HTML.

EM POUCAS PALAVRAS

Como apresentado na etapa 3, nem sempre a aplicação passará por todas as etapas do ciclo. Como por exemplo, na primeira visualização de uma página, neste caso nenhum erro ocorreu, mas também não há o que ser validado, sendo necessário apenas processar a página e responder ao usuário. “Restore View” e “Render Response”.

No entanto, como apresentado no exemplo da etapa 3, caso algum erro seja encontrado no processo de validação ou conversão de uma entrada, a aplicação é logo redirecionada para a fase final “Render Response”.