Introdução ao JSF. Daniel Bruno II Semana de Tecnologia da Informação UNIVEM

Documentos relacionados
Java Server Faces Navegação de

Componentes Web do JEE

Engenharia de Aplicações Sistemas Interactivos 2009/10! JAVASERVER FACES 1.2. Mestrado em Informática Universidade do Minho! 31!

Surgindo em 1997 a API Java Servlet proporciona ao desenvolvedor a possibilidade de adicionar conteúdo dinâmico em um servidor web usando a

(UFF) JSF (I) TEPIS II

Managed Beans e Tags JSF

Configurando uma aplicação Struts

Tutorial 1 Configuração Apache Tomcat no NetBeans 8.0 (passo a passo)

Karen Frigo Busolin Abril/2011

Uma sintaxe universal para identificar os recursos. No sistema REST, cada recurso é unicamente direcionado através da sua URI.

Continuação... Criando a Interface e adiante

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER 3.0 utilizando o Eclipse Galileo Modelling Tools

Minha primeira aplicação utilizando Java Server Faces + Glassfish

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

Regras de Navegação e Templates

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER utilizando o Eclipse Galileo Modelling Tools

INTRODUÇÃO À TECNOLOGIA SERVLETS

JSP (JAVASERVER PAGES)

Continuação... Criando a Interface e adiante

Unidade 6: Java Server Pages Prof. Daniel Caetano

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

2 Criar uma Enterprise Application que num módulo EJB irá conter um ou vários Beans.

Integrated Government Resources Planning IGRP Open Source. Como importar e contribuir - GitHub. Núcleo Operacional da Sociedade de Informação

Instalação Wiser Discovery Sistema Operacional Windows

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 4 PROF. EMILIO PARMEGIANI

Exibindo barra de progresso com JSF e Primefaces

Figura 1: Eclipse criação de um Dynamic Web Project

Integração Java x Flex

Login Google. Copie a SSL URL, que no meu caso é

TUTORIAL DE UTILIZAÇÃO DO OWL-S COMPOSER W. Trabalho de Conclusão de Curso Aluno: Adriano Novais Queiroz Orientadora: Prof.ª Daniela Barreiro Claro

Índice. 1. Introdução Instalação: Eclipse e Android Primeira aplicação em Android... 11

Manual de Instalação Emissor NF-e Advanced SAIB 3.10 Versão e posteriores

INTRODUÇÃO À TECNOLOGIA SERVLETS

JavaServer Faces JSF

Usando o Eclipse - Fundamentos. Professor Vicente Paulo de Camargo

JAVA. Professor: Bruno Toledo

Laboratório 01 NetBeans

Noções básicas do SAP Business One Tópico: Guia de introdução

Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

Objetivos. Aprender o que são JavaBeans e como podem ser usados em páginas JSPs Usando ações-padrão ao invés de scripts

Criação de Servlets Name Directory Build WAR JSP/Servlet frameworks Launch URL Package Class name Generate header comments

Desenvolvimento para Web em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Lamarck Heinsch Mestrando PPGI/CT/UFSM

Manual De Utilizador. Minha Primeira Aplicação e Página. Integrated Government Resources Planning NOSI NÚCLEO OPERACIONAL DA SOCIEDADE DE INFORMAÇÃO

TUTORIAL INTEGRAÇÃO SPRING, HIBERNATE E MYSQL

05 Como utilizar POO no ambiente gráfico do C#?

DISTRIBUINDO SUA APLICAÇÃO

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

SQL Server Integration Services

Timezones e atributo rendered

NOVIDADES DO JAVA PARA PROGRAMADORES C

DISTRIBUINDO SUA APLICAÇÃO

O que é uma tag Tag tag tag tag tag tags tags HTML O que é uma tag library biblioteca de tags tags Java Standard Tag Library JSTL Tag Library JSTL

Introdução ao Desenvolvimento de

Programação para Web I Desenvolvendo templates com Facelets. Prof. Eder de Lima Lacerda

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

J550 JSP com tags padrão

Ferramenta 1 -NetBeans 8.0

Visual Studio+SQL Server Express LocalDB ANTONIO LUIS

Após instalar o dude, o sistema oferece para descobrir toda sua rede de forma default, particularmerte, se sua rede for grande isso fará uma confusão

Introdução a Programação Web com PHP

Para criar um projeto no ambiente eclipse utiliza-se o menu File, New e Project como ilustra a Figura 1.

Acesso a Dados VS.NET Smart Client (Windows Application)

Produção de tutoriais. Suellem Oliveira

Primefaces 3. Laboratório Passo-a-Passo. JSF - Primefaces. Prof. Leandro Rubim de Freitas Versão 1.

Microsoft Word 2010 NORMA ABNT para Trabalhos Acadêmicos Conceitos Básicos

MÓDULO Programação para Web 2

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 5 PROF. EMILIO PARMEGIANI

Tutorial sobre o uso da ferramenta de autoria A Ferramenta de Autoria - Célula

MANUAL DE PUBLICAÇÃO NO PORTAL CAMPUS MATÃO

Manual Dos Técnicos. Meu Primeiro Projecto Java IGRP JAVA OPEN SOURCE NOSI - NÚCLEO OPERACIONAL DA SOCIEDADE DE INFORMAÇÃO

Aplicações Web com Servlets e JSP

Desenvolvimento Web com Java. Sérgio Lopes Caelum -

INTRODUÇÃO A PROGRAMAÇÃO PARA WEB

Projetos do MyFaces 1/12

Universidade da Beira Interior. Sistemas Distribuídos /2016 Curso: Engª Informática. Folha JAX-RS: Java API for RESTful Web Services

Introdução à Ciência da Computação com Jogos Bruno Feijó - Esteban Clua - Fávio S. Corrêa da Silva

SERVLETS. Introdução UNIDADED

Open Day Bibliotecas ElipseX

Groupware Workbench Tutorial de instalação da Aplicação-Exemplo no Eclipse

Aula 03 - Projeto Java Web

POO Programação Orientada a Objetos

Tutorial Hibernate + Vraptor para projetos Restful.

Produção de tutoriais. Suellem Oliveira

Criando uma página de Recados com acesso restrito ( Facebook )

Jclic Alfabeto Sonoro

Desenvolvimento de Sistemas Corporativos Aula 1.5 Introdução a Servlets. Prof. Bruno Moreno

CURSO BÁSICO DE CRIAÇÃO DE SITES MÓDULO 1 AULA 6

Produção de tutoriais. Suellem Oliveira

Criando um Editor de Diagramas com Sirius

Como criar casos na Central de atendimento ao cliente Cisco and/or its affiliates. All rights reserved. 1

DESENVOLVENDO APLICAÇÕES WEB COM JSP E JSTL. Peter Jandl Junior. Novatec


Tendo em vista que a instalação é muito fácil (Next, next, finish) não iremos abordar isto ok ;)

JAVA PARA WEB E EJB APLICAÇÕES WEB, SERVIDORES DE APLICAÇÃO, CONTAINERS WEB

PROJETO WEB: Java. Prof Fernando Gomes

Produção de tutoriais. Suellem Oliveira

Transcrição:

Introdução ao JSF Daniel Bruno dbconrado@gmail.com II Semana de Tecnologia da Informação UNIVEM

O que é? Framework de interface com o usuário; Orientado a componentes; Altamente extensível/personalizável; Especificado pelo JCP 252 (participação de várias empresas);

O que fornece? Gerência de estados dos componentes; Tratamento de eventos; Validação; Conversão de dados; Mapeamento das navegações entre páginas; Internacionalização, entre outros.

Como funciona Os componentes, seus estados, seus eventos, validações, etc., acontecem no servidor. Isto se chama server-side components. Acessa página HTTP Request Conteiner WEB minhapagina.jsp Componentes JSF Browser Devolve HTML HTTP Response Aplicação JSF

Como funciona minhapagina.jsp é uma página JSP normal que contém tags de componentes JSF; Aplicação JSF é a que você criou, contendo: Tratadores de eventos; Validadores e conversores; JavaBeans que encapsulam dados e comportamentos específicos para os componentes inseridos na página; Entre outros.

Benefícios Separação limpa entre apresentação e comportamento; Separação de papéis dentro de uma equipe (i.e., programador de páginas e programador de aplicação); Não se limita à JSP. Outras tecnologias de apresenção podem ser utilizadas (i.e., Facelets).

Uma aplicação web JSF É uma aplicação web em Java comum, com algumas coisas a mais: Conjunto de páginas JSP (se for a tecnologia de apresentação usada); Conjunto de backing beans (componentes JavaBeans que definem propriedades e funções para componentes UI em uma página);

Uma aplicação JSF Continuando: Arquivo de configuração de recursos, que define navegação de páginas, configurações dos backing beans, entre outros; Objetos validadores, conversores, ou tratadores de eventos; Conjunto de tags customizadas, para representar objetos em uma página.

Papéis em uma aplicação JSF Autor de páginas: Cria as páginas utilizando as bibliotecas de tags do JSF; Desenvolvedor de aplicação: Criador de conversores, validadores, tratadores de eventos e backing beans; Autor de componentes: Cria componentes e renderizadores;

Papéis em uma aplicação JSF Arquiteto da aplicação: Configura toda a aplicação; Define regras de navegação entre páginas; Configura objetos (conversores, validadores, etc); Entre outros;

Hello World em JSF Vamos criar uma aplicação com duas páginas, sendo: helloform.jsp: a página que receberá o nome do usuário; hellomessage.jsp: a página que exibirá uma mensagem customizada com o nome do usuário.

Hello World em JSF Abra o NetBeans 6.5.1; Vá em File New Project...; Em Categories, selecione Java Web; Em Projects, selecione Web Application; Clique em Next; Em Project Name, informe HelloJSF;

Hello World em JSF Opcionalmente, você pode definir um diretório alternativo onde será gravado o projeto em Project Location; Clique em Next; Em Server, selecione Tomcat 6.0; Em Java EE Version, selecione Java EE 5; Context path provavelmente será /HelloJSF;

Hello World em JSF O context path é como sua aplicação será chamada para execução, dentro do servidor. Neste caso, a nossa aplicação será chamada assim: http://localhost:8080/hellojsf; Onde: Localhost é o servidor (neste caso, a máquina local);

Hello World em JSF Continuando...: 8080 é a porta onde o servidor Tomcat está executando; /HelloJSF é o context path; Clique em Next; Em Frameworks, selecione apenas JavaServer Faces (o nosso JSF);

Hello World em JSF Na aba Configuration temos JSF Servlet Name como Faces Servlet. Esta servlet é responsável por toda execução do JSF. Toda página que contiver componentes JSF deve ser executada por ela. Por isso, temos abaixo o Servlet URL Pattern. Este indica quais páginas serão executadas pela Servlet;

Hello World em JSF Neste caso, informamos /faces/*; Isto significa que todas as páginas chamadas com o prefixo /faces/ serão executadas pela Faces Servlet. Por Exemplo: http://localhost:8080/hellojsf/faces/helloform.jsp; http://localhost:8080/hellojsf/faces/hellomessage.jsp;

Hello World em JSF Se chamarmos a página helloform.jsp desta forma: http://localhost:8080/hellojsf/helloform.jsp, ela não será executada pela Faces Servlet. Como consequência, os componentes JSF desta página não serão executados.

Hello World em JSF É comum os desenvolvedores mudarem este URL pattern para *.jsf. Desta forma, as páginas seriam acessadas assim: http://localhost:8080/hellojsf/helloform.jsf; http://localhost:8080/hellojsf/hellomessage.jsf; Vamos deixar a configuração padrão;

Hello World em JSF O NetBeans constrói o projeto e nos mostra várias pastas lógicas. Por enquanto, vamos nos concentrar em apenas três, a saber: Web Pages aí é onde o NetBeans organizará as páginas JSP, bem como arquivos CSS, javascript's, imagens, etc.; Configuration Files arquivos de configuração da aplicação; Source Packages as classes Java de nossa aplicação.

Hello World em JSF O NetBeans, por padrão, cria uma página de Hello World chamada welcomejsf.jsp. Exclua-a. Não vamos precisar dela. Para isso, clique nela, na parte Web Pages, e aperte Delete.

Estrutura da aplicação Hello JSF helloform.jsp Envia nome do usuário hellomessage.jsp Mostra mensagem de erro, Caso nome esteja vazio

Backing Bean NomeBean Para enviarmos o nome de uma página a outra, precisamos de um backing bean; É uma classe Java normal que segue o padrão JavaBeans; Simplesmente conterá um atributo String nome e seus métodos acessores get/set;

Backing Bean NomeBean Clique com o botão direito em Source Packages e, no menu que aparecer, selecione New Java Class; Em Class Name, informe NomeBean; Em Package, informe bean; Clique em Finish; Insira um atributo String nome e os métodos get/set. A classe ficará conforme próx. slide;

Backing Bean NomeBean public class NomeBean { private String nome; public String getnome() { return nome; } } public void setnome(string nome) { this.nome = nome; }

Configurando NomeBean Vamos configurar o bean para que ele possa ser utilizado em nossas páginas. Para isso, vá em Configuration Files e dê duplo clique em faces-config.xml; Clique na parte XML e, dentro da tag facesconfig, coloque: <managed-bean> <managed-bean-name>nomebean</managed-bean-name> <managed-bean-class>bean.nomebean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean>

Configuranto NomeBean <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/w <managed-bean> <managed-bean-name>nomebean</managed-bean-name> <managed-bean-class>bean.nomebean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> </faces-config>

Explicando a configuração Managed-bean-name: é o nome pelo qual as páginas JSP acessarão o bean; Managed-bean-class: a classe java do bean. Neste caso, dizemos que é a classe NomeBean que está dentro do pacote bean; Managed-bean-scope: o escopo do bean. Isto será explicado posteriormente.

Criando a primeira página Agora que já temos o bean configurado, vamos criar nossa primeira página JSP com componentes JSF.

Página helloform.jsp Clique com o botão direito em Web Pages. No menu que aparecer, selecione New JSP; Em JSP File Name, informe helloform; Clique em Finish;

Página helloform.jsp Abaixo da diretiva page, inclua as taglib's do JSF: <%@taglib prefix="f" uri="http://java.sun.com/jsf/core" %> <%@taglib prefix="h" uri="http://java.sun.com/jsf/html" %>

Página helloform.jsp Dentro da tag <body> insira: <f:view> <h:form> <h:outputlabel for="itnome" value="informe seu Nome"/> <h:inputtext id="itnome" value="#{nomebean.nome}"/> <br/> <h:commandbutton value="ok"/> </h:form> </f:view>

Explicando a tag <f:view> A tag <f:view> cria uma view JSF. Ela é um container que tem todos os componentes que fazem parte da view; Cada página só pode ter uma única view; Todos os demais componentes JSF devem estar dentro dela; Qualquer componente que fique fora pode gerar um erro.

Explicando a tag <h:form> Representa a tag form do HTML; Dentro do form, devem estar os componentes para entrada de dados, que serão posteriormente enviados;

Explicando a <h:outputlabel> Esta tag representa uma tag HTML <label>; Atributo for indica a qual componente este label está associado; Atributo value é o texto que será exibido;

Explicando a <h:inputtext> Representa uma caixa de texto; Atributo id é o nome do componente dentro da página; Value é o valor da caixa de texto. Este atributo também é utilizado para gravar o valor digitado pelo usuário.

EL Expressions Colocamos no atributo value do inputtext o seguinte: #{nomebean.nome}; Isto se chama expressão EL ou EL expression; Utilizada para acessar os backing beans;

EL Expressions Decompondo esta expressão, temos: nomebean o nome do bean que configuramos no faces-config; nome a propriedade nome do bean nomebean. O que define uma propriedade são os métodos set/get; Como criamos os métodos getnome() e setnome(), nome virou uma propriedade;

EL Expressions Quando a página for renderizada, o componente inputtext chamará o método getnome() para pegar o valor atual da propriedade; Quando a página for submetida, o inputtext chamará o método setnome(), passando por parâmetro o texto que foi digitado pelo usuário;

Explicando <br/> Uma simples quebra de linha;

Explicando <h:commandbutton> Representa um botão; Atributo value é o texto do botão; Alteraremos este componente mais pra frente;

Criando a hellomessage.jsp Clique com o botão direito em Web Pages e, no menu que aparecer, clique em New JSP; Dê o nome de hellomessage e clique em Finish; Adicione as taglib's do JSF, conforme página anterior;

Criando a hellomessage.jsp Dentro da tag <body> adicione: <f:view> <h1><h:outputtext value="olá, #{nomebean.nome}"/></h1> </f:view>

Configurando navegação Vamos configurar a navegação entre as páginas; A navegação se dá através de string's chamadas de outcome's; Configuramos a navegação através de regras. Uma regra de navegação contém a origem e uma série de pares outcome/destino;

Exemplo de regra de navegação Origem: menu.jsp; Outcome: clientes, Destino: clientes.jsp; Outcome: produtos, Destino: produtos.jsp;

Configurando Navegação Vá em Configuration Files e abra o facesconfig.xml; Na parte PageFlow, o NetBeans colocou automaticamente todas as nossas páginas; Clique e segure no pequeno quadrado ao lado do sinal de mais (+) da página helloform.jsp e arraste até o mesmo quadrado da página hellomessage.jsp;

Configurando Navegação O NetBeans criará uma linha ligando as duas páginas com o nome case1; Selecione a linha e vá na janela Properties; Em Outcome, digite mensagem;

Regra criada Origem: helloform.jsp; Outcome: mensagem, Destino: hellomessage.jsp

Voltando a helloform.jsp Volte à pagina helloform.jsp e altere o componente commandbutton conforme abaixo: <h:commandbutton value="ok" action="mensagem"/>

Explicando... O atributo action do componente commandbutton pode ser o outcome da regra de navegação que criamos; Desta forma, quando o usuário clicar no botão, será direcionado para a página hellomessage.jsp. O valor digitado no campo de texto será gravado no NomeBean.

Antes de rodar... Antes de rodarmos nossa aplicação, precisamos de uma página jsp que, ao ser acessada, direcione para a página helloform.jsp; Por padrão, o servidor Web executa a página index.jsp da aplicação; Então, criamos a index.jsp que direciona para a página helloform.jsp;

index.jsp Clique com o botão direito em Web Pages e, no menu, clique em New JSP; Dê o nome de index e clique em Finish; Coloque dentro da tag body o seguinte: <jsp:forward page="/faces/helloform.jsp"/>

Configurando a index.jsp Vá em Configuration Files e abra o web.xml; Vá na aba Pages; Em Welcome Files, digite: index.jsp; Salve e execute o projeto.

Adicionando validação Vamos validar a entrada do nome do usuário; Ele não pode ser vazio; Para isso, vamos alterar o componente inputtext; Abra a página helloform.jsp;

Adicionando Validação No componente inputtext, adicione mais dois atributos conforme abaixo: <h:inputtext id="itnome" value="#{nomebean.nome}" required="true" requiredmessage="nome não pode ser vazio."/>

Adicionando Validação Além disso, adicione um componente <h:message> logo após o inputtext, conforme abaixo: <h:message for="itnome"/>

Explicando <h:message> É um componente que exibirá mensagens associadas ao componente descrito pelo atributo for; Ou seja, qualquer mensagem que o inputtext lançar, será exibida por este componente;

Rodando Rode novamente a aplicação e clique em OK sem digitar nada no campo de texto;

Internacionalização Um recurso muito poderoso do JSF é a internacionalização; A aplicação pode ser facilmente traduzida para praticamente qualquer idioma; As mensagens ficam gravadas em arquivo de recursos chamado de Resource Bundle; Pode ser uma classe Java ou um arquivo texto.

Internacionalização Para internacionalizar nossa aplicação, vamos criar uns arquivos texto, contendo as mensagens de nossas páginas; Serão dois, um em português e outro em inglês;

Internacionalização Vamos criar um pacote para guardar nossos arquivos texto; Clique com o botão direito no projeto, selecione new Package; No nome do pacote, informe mensagem;

Internacionalização Clique com o botão direito em cima do pacote mensagem, selecione new Other; Em Categories, selecione Other; Em File Types, selecione Properties File; Dê o nome de Mensagens_pt_BR;

Entendendo o nome do arquivo Mensagens será o nome base de todos os idiomas; pt_br indica a língua (pt português) e o país (BR Brasil); A extensão de um arquivo de recurso texto é.properties;

Mensagens_pt_BR.properties Digite dentro deste arquivo o seguinte: informenome=informe seu Nome nomenaovazio=nome não pode estar vazio. ok=ok ola=olá ingles=english portugues=português

Arquivo em Inglês Agora, vamos criar as mensagens em inglês; Crie um novo arquivo properties e dê o nome de Mensagens_en_US;

Mensagens_en_US.properties Neste arquivo, digite: informenome=enter your name nomenaovazio=name cannot be null. ok=ok ola=hello ingles=english portugues=português

Configurando o ResourceBundle Abra o faces-config.xml e, dentro da tag faces-config, digite: <application> <resource bundle> <base name>mensagem.mensagens</base name> <var>mensagens</var> </resource bundle> <locale config> <default locale>pt_br</default locale> <supported locale>en_us</supported locale> <supported locale>pt_br</supported locale> </locale config> </application>

Explicando... Tag application: define configurações gerais da aplicação toda; Tag resource-bundle: serve para configurar um resource bundle; Tag base-name: indica o nome base dos arquivos de recurso. Neste caso, indicamos que está no pacote mensagem, e os arquivos começam com Mensagens.

Explicando... Assim, o JSF sabe que, para a língua portuguesa, país Brasil, ele deve procurar por: mensagem.mensagens_pt_br; Para a língua inglesa, país Estados Unidos, por: Mensagens_en_US; E assim por diante;

Explicando... Tag var: indica o nome da variável que será visível nas páginas JSP. Esta variável será utilizada para colocar as mensagens nas páginas. O nome que demos foi mensagens. Veremos mais adiante; Tag locale-config: configura os idiomas que podem ser usados na aplicação; Tag default-locale: língua padrão da aplicação;

Explicando... Tag supported-locale: indica os idiomas suportados pela aplicação. Neste caso, temos dois: pt_br e en_us; Definimos, através da tag default-locale, que a aplicação será em português, caso o JSF não consiga identificar a língua do browser;

Alterando as páginas Agora, vamos substituir as mensagens estáticas de nossas páginas pelas mensagens dos arquivos de recurso; Abra a página helloform.jsp; Substitua a frase Informe seu nome por #{mensagens.informenome} ; Veja que utilizamos a variável mensagens, previamente definida no faces-config;

Alterando helloform.jsp <h:outputlabel for="itnome" value="#{mensagens.informenome}"/> <h:inputtext id="itnome" value="#{nomebean.nome}" required="true" requiredmessage="#{mensagens.nomenaovazio}"/> <h:message for="itnome"/> <br/> <h:commandbutton value="#{mensagens.ok}" action="mensagem"/>

Alterando hellomessage.jsp <h:outputtext value="#{mensagens.ola}, #{nomebean.nome}"/>

Rodando a Aplicação Ao rodar a aplicação, ela deverá aparecer com o idioma padrão do seu browser (ou de sua máquina);

Forçando um idioma Podemos forçar um idioma na nossa aplicação; Vamos colocar dois links na página helloform.jsp, Inglês e Português; Vamos também criar um backing bean que mude o idioma de nossa aplicação;

IdiomaBean Clique com o botão direito no projeto, selecione New Java Class; Dê o nome de IdiomaBean e coloque no pacote bean; Crie um método chamado mudaridioma() que receba, como parâmetro, um objeto Locale. Deverá ficar conforme próximo slide;

IdiomaBean public void mudaridioma(locale locale) { FacesContext fc = FacesContext.getCurrentInstance(); fc.getviewroot().setlocale(locale); }

Explicando... Um objeto Locale representa um idioma e, opcionalmente, um país; FacesContext representa o contexto da aplicação JSF. Contém todas as configurações; getviewroot() retorna a view atual (a página que está sendo exibida/processada);

Explicando... O método setlocale() muda o idioma da aplicação para o idioma especificado pelo objeto Locale;

IdiomaBean - continuando Agora, vamos adicionar mais dois métodos especiais; Estes métodos são chamados por dois links que colocaremos na página helloform.jsp; Eles devem obedecer à algumas regras, que são: a) devem retornar uma String (um outcome) e; b) não podem receber parâmetros;

IdiomaBean - continuando public String ingles() { Locale locale = new Locale("en", "US"); mudaridioma(locale); return null; } public String portugues() { Locale locale = new Locale("pt", "BR"); mudaridioma(locale); return null; }

Explicando... O método ingles() é responsável por mudar o idioma da aplicação para inglês; Ele cria um objeto Locale com o idioma inglês (en) e o país Estados Unidos (US); Utiliza o método mudaridioma e retorna null; O método portugues() funciona de forma semelhante ao método ingles() exceto por mudar o idioma para português brasileiro;

Explicando... Por que retornar null? Quando utilizamos um link, geralmente é para navegar para uma outra página. No JSF, a navegação se dá pelos outcome's; Neste caso, queremos ficar na mesma página, por isso, retornamos null;

Configurando o IdiomaBean Abra o faces-config.xml e, embaixo da configuração do NomeBean, digite: <managed-bean> <managed-bean-name>idiomabean</managed-bean-name> <managed-bean-class>bean.idiomabean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean>

Colocando os links Abra a helloform.jsp e, depois do commandbutton mas antes do </h:form>, coloque: <h:commandlink action="#{idiomabean.ingles}" value="#{mensagens.ingles}" immediate= true /> <br/> <h:commandlink action="#{idiomabean.portugues}" value="#{mensagens.portugues}" immediate= true />

Rodando... Rode a aplicação e você verá que é possível mudar o idioma através dos links!

Explicando... commandlink representa um link em uma página; O atributo action não só pode receber uma string como também um método, ou a expressão do método (MethodExpression); Mas este método deve ser especial, conforme foi citado anteriormente (vide IdiomaBean);

Explicando... Atributo immediate, quando true, serve para pular antecipar algumas etapas; Se este atributo não estivesse aí, o link não funcionaria se o campo de texto estivesse vazio, pois a validação barraria. Experimente fazer isso; Quando true, o link será executado antes da validação;

Frameworks sobre frameworks Existem muitos frameworks que auxiliam o desenvolvimento com JSF; Frameworks de RIA (Rich Internet Applications); Frameworks de extensão do core do JSF;

Frameworks MyFaces Tomahawk; MyFaces Trinidad; MyFaces Tobago; MyFaces Orchestra; http://myfaces.apache.org/

Mais usados Richfaces (www.jboss.org/richfaces); ICEFaces (www.icefaces.org); ADF faces ( http://jdevadf.oracle.com/adf-richclient-demo );

Emergente PrimeFaces (primefaces.prime.com.tr);

Muito obrigado.