Vous êtes sur la page 1sur 7

Desenvolvendo

uma Aplicao Bsica com JSF 2 e Primefaces


Tpico 2

Apresentao

O curso indicado para quem j tem conhecimentos da linguagem de programao JAVA e deseja iniciar o desenvolvimento de aplicaes para web com JSF. Iremos mostrar no decorrer do curso como criar uma aplicao WEB com JSF, mostrando a criao de um controle de acesso, pginas de erro, CRUDs e relatrios utilizando a ferramenta IREPORT. As aulas esto organizadas em mdulos onde os assuntos so apresentados utilizando exemplos prticos, resumos em slides, exerccios de fixao, vdeo-aulas e a possibilidade de interao com o instrutor atravs de chats. Alm disso, os alunos podero enviar dvidas e submeter material para anlises e correo pelos instrutores. maneira: 1. 2. 3. 4. Ao final do curso, todos cdigos fontes podero ser enviados ao alunos. Este curso est organizado em 10 tpicos, sendo cada um organizado da seguinte

Um arquivo PDF com o contedo do tpico que ser abordado. Uma vdeo aula mostrando de forma prtica o que foi apresentado no arquivo anterior. Um chat para que aluno possa interagir com o professor e sanar suas dvidas. Um exerccio que dever ser enviado para o professor.

Neste tpico iremos: 1. Importncia dos Conceitos 2. Ciclo de Vida de uma aplicao JSF 3. O Que um PhaseListener? 4. Mtodos de Um PhaseListener 5. Prtica do tpico

1. Importncia dos Conceitos


Mais importante do que fazer, saber o que est fazendo. No desenvolvimento web com Java, principalmente quando se est fazendo uso de um framework, importante que se conhea os conceitos bsicos que norteiam esse framework. Em se tratando de JSF existem alguns conceitos que no podem simplesmente passar em branco. A ideia do curso no apenas que voc termine a aplicao de exemplo, mas que ao final do curso voc aprenda todos os conceitos que esto a volta desse framework. Nesse tpico, vamos conhecer o ciclo de vida de uma aplicao JSF e conhecer todas as fases que compem esse ciclo de vida.

2. Ciclo de Vida do JSF


O que acontece quando uma requisio disparada pelo cliente? A requisio recebida pelo ManagedBean, certo. Mas e o que acontece nesse meio termo? Para responder s perguntas necessrio conhecer o ciclo de vida de uma requisio JSF. O Ciclo de vida composto das seguinte fases, e ocorrem na sequncia mostrada abaixo:
Restore View Apply Request Values Process Validation Update Model Values Invoke Aplication Render Response

Vamos entender o que acontece em cada uma dessas fases. Restore View Nesta fase, a view, nossa pgina contendo nossos componentes, recuperada pelo container e caso a arvore de componentes ainda no tenha sido criada ser criada nesse momento. Apply Request Values Nesta fase, a rvore de componentes percorrida e todos os componente tem seu valor atualizado. Ou seja, nessa fase que os valores informado pelos os usurios na view so de fato armazenados nos componentes JSF. Process Validation

Nesta fase, os valores que foram armazenados em cada componente na fase anterior so validados pelos seus respectivos validadores, que verificam se o dado informado est de acordo com o tipo de dado esperado. Por exemplo:

Imaginem que temos em nossa view o seguinte compoente:

No exemplo acima, temos um campo texto que ser valido segundo o seu tamanho. E a regra de validao que o tamanho seja no mnimo 6 e no mximo 10. Essa validaoo ser disparada na fase Validation Process. Update Model Values Nesta fase, a rvore de componentes novamente percorrida e cada componente tem seu modelo atualizado. Isso acontece quando os valores que esto vinculados esses componentes sofreram alterao.
Invoke Aplication

Nesta fase disparado um evento para todos os componentes autorizando-os a executar seus Actions e ActionListeners. Render Response Nesta fase, a viso processada e exibida ao usurio.

3. Mas o que PhaseListener?


No tpico passado ns escrevemos um PhaseListener denominado LoginPhaseListener e o registramos no arquivo faces-config.xml. Escrevemos um PhaseListener quando desejamos interceptar as fases do ciclo de vida de uma requisio. Nesse caso, estamos verificando se existe um usurio logado em nossa aplicao. Caso no exista o usurio redirecionado para a pgina de login. O PhaseListener que criamos chamado de global, pois ele vlido por toda a aplicao. Ou seja, no importa aonde estamos, qualquer requisio disparada ser interceptada pelo PhaseListener. Mas possvel, dependendo da necessidade, que se faa um PhaseListener especfico para uma pgina, nesse caso, no necessrio que se registre esse PhaseListener no arquivo faces-config.xml, basta apenas que coloquemos na view responsvel por disparar o PhaseListener a seguinte tag:

No exemplo acima o PhaseListener, CarrinhoCompraListener, seria disparado somente pela pgina onde a tag estiver adicionada. Tambm possvel adicionarmos um PhaseListener de forma programtica, mas isso fica para um curso.

4. Mtodos de um PhaseListener

observe que a classe LoginPhaseListener implementa a interface PhaseListener. Essa interface possui o contrato, o pr-requisito para criamos nosso PhaseListener. No contrato diz que para termos um PhaseListener temos que implementar trs mtodos: afterPhase, beforePhase e getPhaseId. Vamos enteder cada um desses mtodos: afterPhase -> Esse mtodo chamado imediatamente depois que a requisio passar por uma determinada fase do ciclo de vida. beforePhase -> Esse mtodo chamado imediatamente depois que a requisio entrar por uma determinada fase do ciclo de vida. getPhaseId -> Possui o identificador da fase em que se encontra a requisio. 5. Prtica do tpico como prtica desse tpico, eu gostaria que vocs criassem um novo PhaseListener chamado de InterceptaPhaseListener. Cdigo desse PhaseListener mostrado abaixo. Aps executar a aplicao envie uma requisio simplesmente pressionando qualquer um dos botes de sua tela de login. Em seguida veja o que aparece no console do servidor.

No console deve aparecer algo parecido com a listagem mostrado abaixo:

Veja na imagem que existe uma mensagem de antes e depois para cada uma das 6 fases do ciclo de vida, seguido do nome da fase. Era exatamente isso que espervamos. Bom, espero que consigam executar a prtica e que acima de tudo entendam o objetivo desse tpico. Em caso de dvidas vamos utilizar o frum do tpico. No prximo tpico vou mostrar como podemos explorar a API nativa do JSF2 de suporte a AJAX. Em seguida, vamos dar continuidade ao projeto evisitas. Um abrao a todos. Wagner Borges.

Vous aimerez peut-être aussi