Entendendo um pouco sobre o JSF
Pelo fato do framework JSF para muitos ser uma evolução da linguagem JSP, o ciclo de vida do JSF é parecido com o JSP. Por exemplo, quando o cliente faz uma requisição HTTP para a página, o servidor responde com a página traduzida para HTML. Porém, o que muda no ciclo de vida do JSF, é que na medida que é divido em múltiplas fases, apresenta-se um componente de modelo UI (User Interface) mais sofisticado. O modelo requer que componentes de dados consigam serem convertidos e validados, sendo propagados para os “Beans” de forma ordenada. Como consequência, os componentes de eventos são manipulados.
Durante o ciclo de vida, a implementação JSF deve construir a “view” conhecida como árvore de componentes UI, enquanto considerar o estado salvo de uma submissão passada da página. Quando o cliente submete uma página, a implementação JSF executa várias tarefas, como validações dos dados de entrada dos componentes na “view” e conversões de entrada de dados para tipos específicos do servidor.
A implementação JSF também executa todas as tarefas representadas na Figura 1.
O ciclo de vida manipula os seguintes tipos de requisições: requisições iniciais e postagens. Quando um usuário faz uma requisição inicial a uma página, acontece a solicitação da página pela primeira vez.
Na parte da postagem, é submetido o formulário que contém a página que está previamente carregada dentro do browser, como um resultado de execução na requisição inicial. Quando o ciclo de vida manipula uma requisição inicial, ele executa apenas a restauração da “view” e renderiza as fases da resposta, pois que não existe entrada do usuário ou ações para processo. Com isso, são executadas as fases “Restore View” e “Render Response”, por que não existe usuário ou ações para processar. Geralmente, quando o ciclo de vida trata uma postagem na qual são executados todos os processos das fases.
Geralmente, a primeira requisição de uma página JSF vem do resultado de um clique em um link. Para renderizar a resposta que está em outra página JSF, a aplicação cria uma nova “view” e restaura em uma instância FacesContext, que representa todo a informação contextual associada com o processamento de uma solicitação de entrada e criação de uma resposta. A aplicação então adquire referências de objetos necessárias pela “view” e chamadas do FacesContext.renderResponse, a qual força a renderização imediata da “view” partindo para a fase do ciclo de vida “Render Response”.
Algumas vezes, uma aplicação precisa ser redirecionada para um web service, ou gerar uma resposta que não contém componentes JavaServer Faces. Nesse caso, consegue-se renderizar a fase “Render Response” pela ação:
callingFacesContext.
responseComplete
A situação mais comum é quando um componente JSF envia (submete) uma requisição para outra página. Casos como este, fazem o JSF manipular a requisição e automaticamente atravessar as fases no ciclo de vida para executar qualquer conversão necessária, validações e atualizações de modelo para gerar uma resposta.
O ciclo de vida JSF é vinculado através do objeto Lifecycle, que usa outro objeto a seu favor, o FacesContext. O objeto FacesContext trabalha com seis fases que forma o ciclo de vida JSF, que estão apresentadas abaixo.
Restore View Phase
Essa fase começa quando uma requisição de uma página JSF é feita através de um link ou botão clicado.
Durante esta fase, a implementação JSF constrói a “view” da página em manipulações de eventos, validadores que são salvos na instância do FacesContext. É permitido resgatar todas as informações necessárias para processar uma simples requisição.
Se a requisição de uma página for uma requisição inicial, o JSF cria uma “view” vazia durante esta fase, e o ciclo de vida avança para a fase de renderização da resposta, enquanto a “view” for populada com os componentes referenciados pelas tags na página.
Se a requisição para a página é uma postagem, a “view” corresponde à página que já existe. Durante essa fase, o JSF restaura a “view” por usar as informações do estado salvo dentro de um cliente ou servidor.
Apply Request Values Phase
Nessa fase, a árvore de componentes da página é restaurada com os valores que foram enviados na requisição. Esses valores são obtidos através da requisição, que é aplicada ao componente em memória e não à propriedade da classe Bean para a qual o componente aponta.
Existe um cenário em que quando um componente estiver configurado com o atributo immediate=”true”, o valor dele será diretamente ligado à propriedade na classe Bean. Esse atributo tem a característica de tornar a aplicação imediata dos valores na classe Bean para o componente.
Process Validations Phase
Durante essa fase, o JSF executa todos os validadores e valores registrados que possuem a configuração do campo com o atributo required=”true”.
Update Model Values Phase
Nessa fase, os valores já estão validados e registrados nos componentes que serão atribuídos à respectiva propriedade na classe Bean. Esse processo envolve conversores dos tipos de dados, como por exemplo, conversores personalizados ou data e número.
Invoke Application Phase
Nessa fase, o JSF manipula qualquer nível de evento da aplicação, desde o envio de um formulário ou chamada para outra página através de um link. Depois que todos os valores já estarem validados, convertidos e atribuídos para as propriedades da classe Bean, se for o caso, o JSF adicionará o método da classe Bean que adicionou a requisição. Geralmente são eventos que retornam uma string, que está associada a uma navegação de uma página dentro da aplicação.
Render Response Phase
Por ser a fase final, é exigida que quando a página for construída e devolvida para o browser, o JSF solicite que cada componente de tela que têm suas propriedades, comportamentos e forma, faça a geração do próprio HTML.
Testando o ciclo de vida
Para finalizar, na Listagem 1 é apresentado um pequeno código de como executar todos as fases do ciclo de vida do JSF.
Listagem 1: Teste do ciclo de vida
br.com.testes.listener;
public class PhaseListener implements javax.faces.event.PhaseListener {
public void afterPhase(PhaseEvent event) {
event.getFacesContext().getExternalContext().
System.out.println("AFTER: "+event.getPhaseId());
}
public void beforePhase(PhaseEvent event) {
event.getFacesContext().getExternalContext().
System.out.println("BEFORE: "+event.getPhaseId());
}
public PhaseId getPhaseId() {
return PhaseId.ANY_PHASE;
}
}
Feita a criação da classe, é preciso realizar o registro no arquivo de configuração do JSF, o faces-config.xml. Com o arquivo aberto, inserir as linhas apresentadas na Listagem 2, dentro das tags <faces-config>.
Listagem 2: Registro da classe PhaseListener
<faces-config>
<lifecycle>
<phase-listener>
br.com.testes.listener.PhaseListener
</phase-listener>
</lifecycle>
</faces-config>
Ao finalizar as criações dos arquivos, já é possível rodar o projeto e verificar a saída no Console do IDE.
Links Úteis
- Java 7:
Site com informações sobre o lançamento do Java 7 - JavaFX:
Site para fazer download de aplicações JavaFX - JFXtras:
Site do projeto JFXtras
Saiba mais sobre Java ;)
- O Que é JPA?:
Dominar a persistência de dados é uma necessidade indispensável aos programadores. Sem esse conhecimento nossas aplicações não terão a capacidade de armazenar e recuperar os dados por ela manipulados. - Preparando o ambiente para programar em Java:
Neste curso você aprenderá a preparar seu ambiente para programar em Java. Veremos aqui o que é necessário instalar e como proceder para desenvolver aplicações com essa linguagem. - Criando meu primeiro projeto no Java:
Neste curso você aprenderá a criar o seu primeiro programa com Java, e não, ele não será um simples “Hello, World!”. :) Para isso, vamos começar ensinando como instalar o Java e preparar o ambiente de desenvolvimento.
Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Promoção de Natal
Oferta exclusiva de Natal!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 59,90
Total: R$ 718,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 59,90 /mês
Total: R$ 718,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.