Você está na página 1de 39

JSF

Parte VIII

Prof. Vinicius Rosalen


Roteiro
• Revisão

• Visão Geral da Tecnologia e vários conceitos


– Mais algumas Tags do Core
• f: actionListener e f: valueChangeListener
• Internacionalização

• Análise de códigos mais elaborados e Exercícios…


Tags do Core – <f:actionListener>
• Um listener interessante é a tag f:actionListener que é utilizada para
associar uma escuta de ação a um componente da página.
– É uma espécie de ouvinte global que pode monitorar vários
componentes…
– Neste caso vamos estar criando a nossa própria classe de escuta
e sobreescrever o método processAction(..)

Mas eu já não fazia algo


parecido com o parâmetro
action ou actionListener da
tag????
Tags do Core – <f:actionListener>
• A grande diferença é que
• Agora eu posso associar esse ouvinte a vários componentes,
• Escutar a ação em qualquer momento no sistema, fazendo uma
espécie de ouvinte global… ao invés de amarrar a um
componente específico, como era antes…
Ouvinte específico via
parâmetro....

Ouvinte geral via tag do


core...
Tags do Core – <f:actionListener>
• Um caso interessante de uso dessa característica seria
por exemplo...
– Verificar se um usuário tem ou não permissão para executar
alguma ação, abortando o processo lançando uma exceção
caso não tenha...

– Vamos analisar um exemplo…aplicando a mesma verificação


(mesmo listener) para componentes diferentes

– Vamos tomar como base o projeto da aula anterior


controleSessaoJSFID Visão do
sistema
Tags do Core – <f:actionListener>
• Como resultado teremos…
Tags do Core – <f:actionListener>
• Primeiro vamos definir quais componentes serão
monitorados pelo listener que a gente vai criar….
Tags do Core – <f:actionListener>
• Agora vamos criar a base de dados com os
mapeamentos das permissões por usuários….
Tags do Core – <f:actionListener> 1/2

• Por fim, vamos criar o ActionListener e realizar as


verificações necessárias….
Tags do Core – <f:actionListener> 2/2

• Por fim, vamos criar o ActionListener e realizar as


verificações necessárias….
Tags do Core – <f:valueChangeListener>
• Também temos outros Listeners globais, por exemplo, para
associar uma escuta de mudança de valor a um componente
de página
– Neste caso vamos estar criando a nosso própria classe de escuta e
sobreescrever o método processValueChange(..)

Vamos analisar um exemplo…


Tags do Core – <f:valueChangeListener>
• Como resultado teremos….
Tags do Core – <f:valueChangeListener>
• Primeiro vamos criar o manged de sessão que vai
armazenar o código do país selecionado
Tags do Core – <f:valueChangeListener>
• Agora vamos criar o manged de requisição que vai lidar
com a comunicação com a página
1/2
Tags do Core – <f:valueChangeListener>
• Agora vamos definir quais componentes serão
monitorados pelo listener que a gente vai criar….
2/2
Tags do Core – <f:valueChangeListener>
• Primeiro vamos definir quais componentes serão
monitorados pelo listener que a gente vai criar….
Tags do Core – <f:valueChangeListener>
• Pra finalizar basta agora criar o listener associado as
tags xhtml e implementar o seu comportamento
Pra fechar

Internacionalização
• JSF fornece suporte à internacionalização como
codificações de caractere e a seleção de pacotes de
recursos

• A internacionalização no JSF 2.0 é possível de duas


formas: faces-config.xml e a tag Core <f:loadBundle />.

• O faces-config.xml é usado principalmente para


numerosas configurações globais de sua aplicação.
Internacionalização
• A ideia básica é definir uma “variável” que armazene os
valores dos campos nos idiomas suportados e fazer a
referencia a essa variável na hora da construção das
páginas, tanto para os rótulos como para mensagens


1/2
Internacionalização
• Como resultado teremos….
2/2
Internacionalização
• Como resultado teremos….
Internacionalização
• Primeiro vamos definir nosso pacote e nomes dos arquivos
onde irá ficar os rótulos dos componentes e mensagens e
a configuração no faces-config
Internacionalização
• Agora podemos definir os rótulos e as mensagens que
queremos personalizar....
Internacionalização
• Caso queira personalizar outras mensagens, basta obter
os dados em Messages.properties do JSF
Internacionalização
• Vamos agora construir um simples managed beans para
envio de alguns dados de teste e “persistência” linguagem
escolhida...
Internacionalização 1/5
• Pra fechar, agora vamos criar nossa página onde poderemos
selecionar a linguagem e observar o comportamento dos rótulos e
mensagens
2/5
Internacionalização
• Pra fechar, agora vamos criar nossa página onde poderemos
selecionar a linguagem e observar o comportamento dos rótulos e
mensagens
3/5
Internacionalização
• Pra fechar, agora vamos criar nossa página onde poderemos
selecionar a linguagem e observar o comportamento dos rótulos e
mensagens
4/5
Internacionalização
• Pra fechar, agora vamos criar nossa página onde poderemos
selecionar a linguagem e observar o comportamento dos rótulos e
mensagens
5/5
Internacionalização
• Pra fechar, agora vamos criar nossa página onde poderemos
selecionar a linguagem e observar o comportamento dos rótulos e
mensagens
Exercícios
• Blz,
– Agora vamos brincar com alguns outros exemplos e
exercícios…

– Lembre-se: O mais importante aqui não é Ctrl+c/Ctrl+v


e sim digitar mesmo os comando para poder
memorizar e se acostumar com a IDE e com os
parâmetros
Exercício
• Classes actionListener e valueChangeListener e tags do
core f:
– Fazer os exercícios a seguir só que agora utilizando as classes
de listeners apresentadas na aula e as tags f: do core

– Nas classes de actionListener , realize a injeção de


dependência do managedBean correspondente e redirecione a
página

– Nas classes de valueChangeListener apresente os valores dos


elementos setados na página em um messages via
FacesMessage
Exercício
• h:inputText
Exercício
• h:commandLink
Exercício
• h:commandButton

Use ID na classe ActionListener para setar


uma variável global do managedBean
correspondete para que ele possa ser
acionado no action da página
Exercício
• h:selectBooleanCheckbox
Exercício
• h:selectManyCheckbox
– Observe que aqui tivemos que usar tags do core do JSF (f:).
Isto implica em importar o seguinte namespace:
Exercício
• h:selectOneRadio
• Observe que aqui tivemos que usar tags do core do JSF (f:).
Isto implica em importar o seguinte namespace:
Exercício
• h:selectOneMenu

Você também pode gostar