Aula parte 2 de JSF 2.2

Post on 23-Jun-2015

263 views 0 download

description

Aula para o curso de Pós Graduação da Faculdade Horus. Disciplina de Programação web em Java com JSF. Parte 2 da disciplina com conceitos de ciclo de vida e utilização do componentes do primefaces Github do projeto: https://github.com/forchesatto/posHorus

Transcript of Aula parte 2 de JSF 2.2

Java para Web - JSFParte 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áticaTransformar 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 - TemasPara 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áticaConstruir 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çãoConfiguraçã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