Java para Web - JSF
Parte 2
André Luiz Forchesatto
Agenda
● JSF 2
○ Ciclo de vida
○ Converters
○ Validation
○ Ajax
● Primefaces
● Internacionalização
Ciclo de vida JSF
● Objeto Lifecycle contrala o ciclo de vida do JSF
● 6 fases
http://www.edsongoncalves.com.br/2010/02/21/javaserver-faces-2-0-na-pratica-parte-3/
Ciclo de Vida
Restaura Visão (Restore View)
restaura ou cria no servidor a árvore de
componentes em memória para
representar a interface com o usuário.
Ciclo de Vida
Restore
View
Aplica Valores da Requisição
(Apply Request Values)
atualiza os componentes no servidor
com os dados do usuário.
Ciclo de Vida
Apply Request Value
Processa Validações
(Process Validations)
processa a validação e a conversão de
tipos em um novo dado.
Ciclo de Vida
Process Validation
Atualiza o Modelo
(Update Model Values)
atualiza os objetos
no servidor com os novos dados.
Ciclo de Vida
Update Model Value
Chama Aplicação
(Invoke Application)
invoca a lógica necessário para
o pedido do usuário e navega
para
uma nova página se necessário.
Ciclo de Vida
Invoke Application
Apresenta a Resposta
(Render Response)
salva o estado atual e
mostra a resposta para
o pedido do cliente.
Ciclo de Vida
Render Response
Ciclo de vida JSF
● Nem toda requisição passa por todas etapas;
● Interceptamos uma das fase implementando a
interface javax.faces.event.PhaseListener
● Os método afterPhase(), beforePhase() e
getPhaseId(), estão disponíveis para interceptar
o ciclo de vida
● Deve ser registrado no faces-config.xml o
Listener criado
Ciclo de vida JSF
Prática
Criar uma classe para interceptar o
ciclo de vida JSF
Converters
● Tem por finalidade converter objetos Java em
String e vice-versa;
● Converters são bidirecionais:
○ Managed-bean faz: getAsObject()
○ JSF faz: getAsString()
● Tipos padrões Java já possuem converters
padrões;
● O converter pode ser implícito(class) ou
explícito(id)
Converters
Explícito
Implícito pegou pela
classe declarada no atributo
Meu Converter
Validatores
● Utilizados para validar o valor de um
campo;
● Retornam um FacesMessage com o erro;
● Existem 3 maneiras de fazer validação de
campo:
○ Validadores padrões JSF
○ Bean Validation
○ Validadores personalizados do JSF
Validadores padrões JSF
● validateRequered
● validateDoubleRange
● validateFloatRange
● validateRegex
Bean Validation
● Especificação definida pela JSR303
● É necessária uma implementação para ser utilizada
● Utiliza annotation para registrar as regras de validação
● Possibilita fazer validações em qualquer camada da
aplicação
● Deve ser escrita de preferência nas classes do modelo
Bean Validation
Usa annotations no model e não precisa
registrar nada no JSF
Validadores personalizados do JSF
● Criar uma classe que implementa uma
interface de validação
● Será utilizado somente no JSF e deve ser
invocado explicitamente no arquivo .xhtml
Validadores personalizados do JSF
Prática
Criar Validatores utilizando Bean Validation
e Validadores Personalizados JSF;
Criar converter para as classes do nosso
projeto;
Criar algumas telas de cadastro;
Ajax
● Asynchronous Javascript and XML
● Um conjunto de tecnologias:
○ HTML
○ DOM
○ XHTML
○ CSS
○ XML
○ XSLT
○ XMLHttpRequest
○ JavaScript
Ajax
● Foi batizado em 2005 pela publicação do
artigo “Ajax: A New Approach to Web
Application” Escrito por Jossé James Garret
● Ajax pode ser usado com Java, Php, Ruby,
etc..
● Ajax = Javascript rodando no browse e se
comunicando com o servidor
Como funciona o AJAX
Como funciona o AJAX
Por que usar AJAX
● Respostas mais rápidas;
● Economia na banda do servidor;
● Maior interatividade;
Ajax no JSF 2.0
O que vai enviar ao servidor
@form, @all, @this,
ou id de um componente
Id do componente a ser atualizado com o
retorno do servidor.
Pode ser usado @all, @this, @form
Evento a ser
executado o
AJAX
Prática
Transformar os cadastros já feitos em
cadastros com AJAX
Primefaces
● Biblioteca de componentes ricos
● Implementada para Mojora (JSF) 2.0
● Mais de 100 componentes
● http://www.primefaces.org/
● http://www.primefaces.org/showcase
Primefaces - Download
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>5.0</version>
</dependency>
Primefaces - XHTML
● Configurar as páginas xhtml para
renderizer primefaces.
xmlns:p="http://primefaces.org/ui"
Dependências
Primefaces - Temas
Para configurar um tema basta adicionar o
jar do tema desejado e configurar o web.xml
http://www.primefaces.org/themes.html
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>cupertino</param-value>
</context-param>
Temas - Download
<dependency>
<groupId>org.primefaces.themes</groupId>
<artifactId>cupertino</artifactId>
<version>1.0.10</version>
</dependency>
<repositories>
<repository>
<id>prime-repo</id>
<name>PrimeFaces Maven Repository</name>
<url>http://repository.primefaces.org</url>
<layout>default</layout>
</repository>
</repositories>
Exemplo Dialog
Exemplo Mascaras
Prática
Construir as telas de cadastro utilizando os
componentes do primefaces;
Criar alguns componentes autocomplete;
Internacionalização
● JSF 2 fornece duas maneiras de
internacionalização
○ faces-config.xml
○ tag Core <f:loadBundle>
● Após configurado é possível pegar através
de uma chave um valor adicionado em um
arquivo texto de mensagens.
Internacionalização
Configuração arquivo faces-config.xml
Internacionalização
● Componente Core <f:loadBundle>
● É necessário configurar em cada página
Internacionalização
● Padrão do arquivo de mensagens:
○ Respeitar o nome que foi adicionado na
configuração;
○ O arquivo é composto por key=value
Internacionalização
● Para utilizar a chave do arquivo basta,
chamar a variável(msg) configurada no XML
(ponto) nome da chave;
<h:outputLabel value="#{msg.tituloUF}"/>
Prática
● Internacionalizar a nossa aplicação
Referências

Aula parte 2 de JSF 2.2