Download do termo de referência - Sema
Download do termo de referência - Sema
Download do termo de referência - Sema
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Conteú<strong>do</strong><br />
FACELETS E LAYOUT CSS ............................................................................................................... 2<br />
O ECLIPSE IDE ..................................................................................................................................... 2<br />
OBTENDO E INSTALANDO O ECLIPSE IDE ................................................................................ 2<br />
O PLUG-IN JBOSS TOOLS ................................................................................................................. 3<br />
INICIANDO NA PLATAFORMA ECLIPSE ..................................................................................... 3<br />
BAIXANDO O JAVASERVER FACES .............................................................................................. 4<br />
AS BIBLIOTECAS DO JAVASERVER FACES ............................................................................... 4<br />
ADICIONANDO O JAVASERVER FACES AO PROJETO NO ECLIPSE IDE .......................... 5<br />
ONDE BAIXAR O FACELETS ........................................................................................................... 6<br />
CRIANDO UM PROJETO SIMPLES COM FACELETS ................................................................ 6<br />
CRIANDO UM JAVABEAN .............................................................................................................. 11<br />
O ARQUIVO FACES-CONFIG.XML ............................................................................................... 13<br />
O ARQUIVO WEB.XML .................................................................................................................... 15<br />
AS PÁGINAS DA APLICAÇÃO ........................................................................................................ 15<br />
Página 1<br />
www.integrator.com.br
Facelets e Layout CSS<br />
JavaServer Faces é muito bom para <strong>de</strong>senvolver aplicações Web, principalmente se você pu<strong>de</strong>r contar<br />
com uma boa ferramenta como o Eclipse IDE. Entretanto, po<strong>de</strong>mos unir as facilida<strong>de</strong>s <strong>do</strong>s<br />
componentes Faces com as características (X)HTML.<br />
Facelets é um framework <strong>de</strong> templates JavaServer Faces, basea<strong>do</strong> em alguns simples princípios:<br />
• Criação <strong>de</strong> uma árvore <strong>de</strong> objetos UIComponent e conteú<strong>do</strong> entrelaça<strong>do</strong> completamente com o<br />
processo <strong>de</strong> ciclo <strong>de</strong> vida <strong>do</strong> JavaServer Faces;<br />
• É mais rápi<strong>do</strong>, pois não utiliza o engine <strong>do</strong> JSP para transformar em Servlets;<br />
• Suporte a templates reutilizáveis, aumentan<strong>do</strong> a produtivida<strong>de</strong> na criação <strong>de</strong> numerosas páginas,<br />
crian<strong>do</strong> uma base padrão;<br />
• Integração com os processos Faces e com as tags (X)HTML (usa diretamente o XHTML como<br />
tecnologia view <strong>do</strong> JSF) como membros da árvore <strong>de</strong> componentes. Isso possibilita a injeção <strong>de</strong><br />
componentes JSF com um simples atributo jsfc;<br />
• Erros mais amigáveis e com maior precisão;<br />
• Eliminação <strong>de</strong> tags JSF como e .<br />
Graças a estas integrações, as aplicações po<strong>de</strong>m ser escritas para serem visualizadas em uma interface<br />
Web 2.0.<br />
O Eclipse IDE<br />
O Eclipse IDE, chama<strong>do</strong> por muitos <strong>de</strong> Plataforma Eclipse, é consi<strong>de</strong>rada por uma gran<strong>de</strong> maioria <strong>de</strong><br />
<strong>de</strong>senvolve<strong>do</strong>res Java como a melhor ferramenta para <strong>de</strong>senvolvimento <strong>de</strong>ssa linguagem.<br />
Desenvolvi<strong>do</strong> inicialmente pela IBM e libera<strong>do</strong> o código fonte a comunida<strong>de</strong>, ao qual se criou a<br />
fundação Eclipse (Eclipse Foundation), sua gran<strong>de</strong> vantagem, na atualida<strong>de</strong>, está no uso <strong>de</strong> seus<br />
assistentes <strong>de</strong> código e gran<strong>de</strong> gama <strong>de</strong> plug-ins, po<strong>de</strong>n<strong>do</strong> se adaptar a qualquer situação <strong>de</strong><br />
<strong>de</strong>senvolvimento.<br />
Até o momento em que esse tutorial está sen<strong>do</strong> escrito, a versão mais atual <strong>do</strong> Eclipse é a 3.3.<br />
Obten<strong>do</strong> e instalan<strong>do</strong> o Eclipse IDE<br />
Para <strong>de</strong>senvolver aplicações Web usan<strong>do</strong> a plataforma Eclipse, primeiramente você <strong>de</strong>verá ter o<br />
Eclipse em um ambiente volta<strong>do</strong> para o <strong>de</strong>senvolvimento Java EE. Para obter o Eclipse IDE, já<br />
configura<strong>do</strong> com o ambiente Web, vá ao en<strong>de</strong>reço http://www.eclipse.org/<strong>do</strong>wnloads/.<br />
Ao carregar a página, vá ao link Eclipse IDE for Java EE Developers.<br />
Figura 1 – Seleção <strong>do</strong> Eclipse IDE que será baixa<strong>do</strong> na área <strong>de</strong> <strong>do</strong>wnloads <strong>do</strong> site oficial<br />
Página 2<br />
www.integrator.com.br
Ao baixar, <strong>de</strong>scompacte em um local <strong>de</strong>seja<strong>do</strong> <strong>de</strong> sua máquina.<br />
O plug-in JBoss Tools<br />
Após a <strong>de</strong>scompactação <strong>do</strong> Eclipse, sem executá-lo, você vai baixar o plug-in JBoss Tools, que<br />
auxiliará no <strong>de</strong>senvolvimento da aplicação. Entre no en<strong>de</strong>reço<br />
http://www.jboss.org/projects/<strong>do</strong>wnload/ e vá até Tools. Clique no link JBoss Tools, como exibe a<br />
Figura 2.<br />
Figura 2 – Seleção <strong>do</strong> JBoss Tools para <strong>do</strong>wnload<br />
Após baixar, o arquivo compacta<strong>do</strong> possui um diretório chama<strong>do</strong> eclipse, conten<strong>do</strong> a estrutura que<br />
será necessária para ser adicionada a instalação <strong>do</strong> Eclipse atual.<br />
Simplesmente cole sobre o diretório eclipse original, obti<strong>do</strong> da <strong>de</strong>scompactação anterior, que o sistema<br />
operacional se encarregará <strong>de</strong> adicionar os plug-ins existentes.<br />
Inician<strong>do</strong> na plataforma Eclipse<br />
Após <strong>de</strong>scompactar o Eclipse, você po<strong>de</strong> iniciá-lo diretamente pelo executável eclipse.exe no<br />
Win<strong>do</strong>ws.<br />
No Linux você po<strong>de</strong> iniciar o Eclipse da seguinte maneira, <strong>de</strong>s<strong>de</strong> que haja as <strong>de</strong>vidas permissões:<br />
shell# /home/edson/eclipse/./eclipse<br />
Assim que iniciar o Eclipse IDE, você po<strong>de</strong> selecionar ou aceitar o local on<strong>de</strong> ele vai armazenar seus<br />
projetos, o chama<strong>do</strong> Workspace. Caso não queira mais ter essa caixa <strong>de</strong> diálogo aparecen<strong>do</strong>, marque a<br />
opção Use this as the <strong>de</strong>fault and <strong>do</strong> not ask again. Confirme após clican<strong>do</strong> no botão OK.<br />
Página 3<br />
www.integrator.com.br
Figura 3 – O Workspace para o <strong>de</strong>senvolvimento das aplicações<br />
Baixan<strong>do</strong> o JavaServer Faces<br />
Para trabalhar com o JavaServer Faces, primeiramente será preciso configurar os arquivos e a estrutura<br />
necessária.<br />
O container Servlet usa<strong>do</strong> para este tutorial será o Tomcat 6 que, por padrão, não possui suporte direto<br />
ao JavaServer Faces, ou seja, não contém as bibliotecas necessárias para o <strong>de</strong>senvolvimento com o<br />
mesmo.<br />
Para baixar o JSF, faça <strong>do</strong>wnload no en<strong>de</strong>reço<br />
http://java.sun.com/j2ee/javaserverfaces/<strong>do</strong>wnload.html. Como irá trabalhar com JavaServer Faces<br />
volta<strong>do</strong> para um container compatível com a tecnologia Java EE 5, você <strong>de</strong>verá baixar a versão JSF<br />
1.2, a utilizada nesse tutorial. Ao baixar o arquivo, simplesmente <strong>de</strong>sempacote em um diretório <strong>de</strong> sua<br />
escolha.<br />
Atenção: Caso queira utilizar o GlassFish, esse passo é <strong>de</strong>snecessário.<br />
As bibliotecas <strong>do</strong> JavaServer Faces<br />
Para ter o JavaServer Faces 1.2 em sua aplicação, você possui <strong>do</strong>is arquivos <strong>do</strong> tipo JAR:<br />
1. jsf-api.jar<br />
2. jsf-impl.jar<br />
Para o trabalho com JSF 1.1, há a necessida<strong>de</strong> <strong>de</strong> oito arquivos <strong>do</strong> tipo JAR que incluem as bibliotecas<br />
<strong>do</strong> JSTL e Commons:<br />
Quatro JARs Commons:<br />
1. commons-beanutils.jar<br />
2. commons-collections.jar<br />
3. commons-digester.jar<br />
4. commons-logging.jar<br />
Dois JARs JSF:<br />
Página 4<br />
www.integrator.com.br
1. jsf-api.jar<br />
2. jsf-impl.jar<br />
Dois JARs JSTL:<br />
1. jstl.jar<br />
2. standard.jar<br />
Para torná-los disponíveis em sua aplicação é simples, bastan<strong>do</strong> apenas colocar esses arquivos lista<strong>do</strong>s<br />
e no diretório lib, encontra<strong>do</strong> em WEB-INF <strong>de</strong> sua aplicação Web.<br />
Porém, como vamos utilizar um ambiente <strong>de</strong> trabalho basea<strong>do</strong> em IDE, será mais fácil essa<br />
configuração.<br />
Configuran<strong>do</strong> o JavaServer Faces no Eclipse IDE<br />
O JSF 1.2 não vem com o plug-in e nem com o Eclipse, assim como o Tomcat. Isso significa que você<br />
<strong>de</strong>ve adicioná-lo ao projeto separadamente. Porém, como você po<strong>de</strong>rá fazer mais <strong>de</strong> um projeto usan<strong>do</strong><br />
JSF, será mais fácil criar uma biblioteca personalizada para que possamos adicionar no projeto com<br />
mais facilida<strong>de</strong>.<br />
Vá ao menu Win<strong>do</strong>w e clique em Preferences. Na caixa <strong>de</strong> diálogo Preferences, digite na parte<br />
superior, on<strong>de</strong> aparece type filter text, a palavra user. Observe que haverá uma filtragem, on<strong>de</strong> você<br />
<strong>de</strong>verá selecionar User Libraries.<br />
Em User Libraries, clique no botão New. Na caixa <strong>de</strong> diálogo New User Library digite JSF 1.2 em<br />
User library name e confirme.<br />
Figura 4 – Adição das bibliotecas JSF 1.2 ao Eclipse IDE<br />
Com a biblioteca selecionada, clique no botão Add JARs. Selecione os arquivos JARs (jsf-api.jar e<br />
jsf-impl.jar) <strong>de</strong>scompacta<strong>do</strong>s <strong>do</strong> JSF 1.2 que você baixou no início <strong>de</strong>ste capítulo. Confirme a caixa<br />
<strong>de</strong> diálogo Preferences.<br />
Página 5<br />
www.integrator.com.br
Figura 5 – A biblioteca <strong>de</strong> usuário JSF 1.2 configurada com os JARs<br />
O Facelets<br />
Você po<strong>de</strong> baixar o Facelets na sua última versão no en<strong>de</strong>reço oficial https://facelets.<strong>de</strong>v.java.net/.<br />
Na parte inferior <strong>do</strong> site, há o link <strong>do</strong>wnloadable from here.<br />
Crian<strong>do</strong> um projeto simples com Facelets<br />
O Eclipse IDE possui mais opções <strong>de</strong> criação <strong>de</strong> páginas com o framework JavaServer Faces <strong>de</strong>vi<strong>do</strong> a<br />
utilização <strong>do</strong> plug-in JBoss Tools.<br />
Vá ao menu File, em New, e selecione Project. Na caixa <strong>de</strong> diálogo New Project, expanda JBoss<br />
Tools Web > JSF e selecione JSF Project. Clique no botão Next para prosseguir.<br />
Página 6<br />
www.integrator.com.br
Figura 6 – Seleção <strong>de</strong> JSF Project <strong>do</strong> plug-in JBoss Tools<br />
Digite TrabComFacelets no campo Project Name e altere para JSF 1.2 with Facelets em JSF<br />
Environment. Mantenha então a opção FaceletsBlankWithoutLibs em Template e clique no botão<br />
Next.<br />
Figura 7 – Novo projeto JSF com Facelets<br />
Na terceira etapa será necessário adicionar um servi<strong>do</strong>r ao Eclipse IDE. Clique no botão New, em<br />
Runtime. Na caixa <strong>de</strong> diálogo New Server Runtime, expanda Apache e selecione Apache Tomcat<br />
v6.0. Clique no botão Next para prosseguir.<br />
Página 7<br />
www.integrator.com.br
Figura 8 – Seleção <strong>do</strong> Apache Tomcat 6<br />
Em seguida, em Tomcat installation directory, clique no botão Browse e selecione o Tomcat<br />
instala<strong>do</strong> em sua máquina. Conclua a adição <strong>do</strong> Tomcat 6 através <strong>do</strong> botão Finish.<br />
Figura 9 – Apache Tomcat seleciona<strong>do</strong> no seu local <strong>de</strong> instalação no Win<strong>do</strong>ws<br />
Após a adição <strong>do</strong> Runtime, clique no botão Finish para concluir o assistente.<br />
www.integrator.com.br<br />
Página 8
Figura 10 – Final da criação <strong>do</strong> projeto no Eclipse IDE<br />
Assim que finalizar, a caixa <strong>de</strong> diálogo Open Associated Perspective sugira, perguntan<strong>do</strong> se <strong>de</strong>seja<br />
abrir a perspectiva associada ao projeto. Clique no botão Yes para confirmar.<br />
Figura 11 – Diálogo pergunta<strong>do</strong> se <strong>de</strong>seja abrir a perspectiva associada ao projeto<br />
Adicionan<strong>do</strong> a biblioteca JSF criada ao projeto<br />
Para adicionar ao projeto a biblioteca JSF criada, clique com o direito <strong>do</strong> mouse sobre ele e selecione o<br />
item Properties no menu <strong>de</strong> contexto.<br />
Na caixa <strong>de</strong> diálogo Properties for TrabComFacelets, em Java Build Path, vá até a guia Libraries<br />
e clique no botão Add Library.<br />
Em Add Library selecione User Library e clique no botão Next.<br />
Página 9<br />
www.integrator.com.br
Figura 12 – Adicionan<strong>do</strong> uma biblioteca <strong>de</strong> usuário configurada<br />
Na segunda etapa, selecione a biblioteca JSF 1.2 criada e clique em Finish.<br />
Figura 13 – Seleção da biblioteca JSF 1.2<br />
Assim que finalizar, você possui a biblioteca no projeto. Clique em J2EE Module Depen<strong>de</strong>ncies na<br />
lateral esquerda. Como a alteração não foi aplicada, a caixa <strong>de</strong> diálogo Setting Java Build Path<br />
surgirá. Confirme no botão Apply para aplicar as alterações.<br />
Observe que em J2EE Module Depen<strong>de</strong>ncies agora existe o JAR/Module JSF 1.2. Marque o<br />
checkbox e confirme.<br />
Página 10<br />
www.integrator.com.br
Crian<strong>do</strong> um JavaBean<br />
Clique com o direito <strong>do</strong> mouse sobre o projeto, na view Package, e selecione New > Class. Na caixa<br />
<strong>de</strong> diálogo New Java Class, digite Cadastro em Name. Altere Package para br.com.integrator (ou o<br />
nome <strong>do</strong> pacote que <strong>de</strong>sejar). Conclua em Finish.<br />
Altere a classe como mostra<strong>do</strong> na Listagem 1 a seguir.<br />
Listagem 1 – A classe Cadastro.java<br />
package br.com.integrator;<br />
public class Cadastro {<br />
private String nome;<br />
private String email;<br />
private String telefone;<br />
//get e set omiti<strong>do</strong><br />
}<br />
Para adicionar os méto<strong>do</strong>s Getters e Setters no Eclipse, vá ao menu Source > Generate Getters and<br />
Setters. Clique no botão Select All na caixa <strong>de</strong> diálogo Generate Getters and Setters e confirme.<br />
Figura 14 – Geran<strong>do</strong> Getters e Setters no Eclipse IDE<br />
Página 11<br />
www.integrator.com.br
O Bean Cadastro possui apenas três atributos necessários, com os méto<strong>do</strong>s getters e setters, para que<br />
os valores sejam envia<strong>do</strong>s pelos campos <strong>de</strong> um formulário que será cria<strong>do</strong> adiante.<br />
Crie uma nova classe, a chame <strong>de</strong> Controle, e a coloque no pacote br.com.integrator.controller.<br />
Altere como mostra<strong>do</strong> na Listagem 2 a seguir:<br />
Listagem 2 – A classe Controle<br />
…<br />
public class Controle {<br />
private Cadastro cadastro;<br />
private List cadList = new ArrayList();<br />
public Controle() {<br />
cadastro = new Cadastro();<br />
}<br />
public Cadastro getCadastro() {<br />
return cadastro;<br />
}<br />
public void setCadastro(Cadastro cadastro) {<br />
this.cadastro = cadastro;<br />
}<br />
private void adicionar(Cadastro c){<br />
cadList.add(c);<br />
}<br />
public DataMo<strong>de</strong>l getTo<strong>do</strong>s() {<br />
return new ListDataMo<strong>de</strong>l(cadList);<br />
}<br />
public String novo(){<br />
cadastro = new Cadastro();<br />
return "cadastro";<br />
}<br />
public String salvar( ) {<br />
this.adicionar(cadastro);<br />
FacesContext context = FacesContext.getCurrentInstance( );<br />
FacesMessage message = new FacesMessage("Salvo com sucesso!");<br />
context.addMessage(null, message);<br />
return "cadastra<strong>do</strong>s";<br />
www.integrator.com.br<br />
Página 12
}<br />
}<br />
Faça as importações da classe com o atalho Ctrl + Shift + O .<br />
Com a intenção <strong>de</strong> simular um banco <strong>de</strong> da<strong>do</strong>s nesse exemplo, você cria na classe um List da classe<br />
Cadastro.<br />
Para salvar o cadastro, a página que será criada chamará o méto<strong>do</strong> salvar() que, por sua vez, chama o<br />
méto<strong>do</strong> adicionar(), transmitin<strong>do</strong> como parâmetro a instância <strong>de</strong> Cadastro, que populará o List.<br />
A página que será exibida após o cadastro, exibirá os da<strong>do</strong>s salvos no List, através <strong>de</strong> uma tabela<br />
populada pelo méto<strong>do</strong> getTo<strong>do</strong>s(), que retorna um DataMo<strong>de</strong>l, da classe Controle.<br />
O arquivo faces-config.xml<br />
Para que o Facelets funcione em sua aplicação Web, é necessário configurar o arquivo facesconfig.xml<br />
com a seguinte linha:<br />
<br />
com.sun.facelets.FaceletViewHandler<br />
<br />
Uma das gran<strong>de</strong>s características <strong>de</strong> JavaServer Faces é a sua flexibilida<strong>de</strong>. Ele é <strong>de</strong>senha<strong>do</strong> com um<br />
número <strong>de</strong> interfaces plugáveis, e uma <strong>de</strong>las é ViewHandler. Então é necessário adicionar um<br />
elemento , conten<strong>do</strong> o elemento para que Facelets seja “pluga<strong>do</strong>” ao<br />
JavaServer Faces.<br />
A classe principal para compilar o <strong>do</strong>cumento Facelets é a SaxCompiler, encontrada no pacote<br />
com.sun.facelets.compiler. Quan<strong>do</strong> o FaceletViewHandler é inicializa<strong>do</strong>, este instancia esta classe e<br />
usa como argumento para o construtor da classe DefaultFaceletFactory (com.sun.facelets.impl).<br />
Embora existam muitas classes em com.sun.facelets.compiler, basicamente, Facelets usa o<br />
SAXParser para analisar gramaticalmente os <strong>do</strong>cumentos XHTML.<br />
O FaceletViewHandler é invoca<strong>do</strong> em duas fases <strong>do</strong> ciclo <strong>de</strong> vida <strong>de</strong> JSF: Restaurar a apresentação<br />
e Ren<strong>de</strong>rizar a resposta.<br />
Na fase <strong>de</strong> Restauração da Apresentação, a ViewHandler cria uma apresentação disponível para<br />
processar em fases subseqüentes. Aqui, o servlet Faces procura FacesContext para a requisição. Se<br />
FacesContext contém um UIRootView, o servlet Faces chama o méto<strong>do</strong> restoreView <strong>de</strong><br />
ViewHandler, que restabelece o esta<strong>do</strong> da apresentação, armazenan<strong>do</strong> o UIRootView em<br />
FacesContext e pegan<strong>do</strong> o valor <strong>de</strong>stes componentes que possuem ligações em value. Se<br />
FacesContext não contém um UIRootView existente, o servlet Faces chama o méto<strong>do</strong> createView <strong>de</strong><br />
ViewHandler, o qual cria uma nova apresentação, ren<strong>de</strong>rizan<strong>do</strong> a resposta e armazenan<strong>do</strong> o<br />
UIRootView em FacesContext. Até o final <strong>de</strong>sta fase, FacesContext contém um UIRootView, que é<br />
uma apresentação prévia restabelecida ou uma nova apresentação.<br />
Na fase <strong>de</strong> Ren<strong>de</strong>rizar a Resposta, o servlet Faces chama o méto<strong>do</strong> ren<strong>de</strong>rView da classe<br />
ViewHandler, o que ren<strong>de</strong>riza a resposta para o cliente para a atual apresentação selecionada e salva o<br />
esta<strong>do</strong> da resposta para processamento em requisições posteriores. A ViewHandler ren<strong>de</strong>riza a árvore<br />
www.integrator.com.br<br />
Página 13
<strong>de</strong> componente JSF e <strong>de</strong>lega o esta<strong>do</strong> salvo para a classe StateManager. Em ambas as fases, a<br />
ViewHandler <strong>de</strong>lega a tarefa <strong>de</strong> restaurar e salvar o esta<strong>do</strong> à classe StateManager.<br />
Nota: O Eclipse IDE, através <strong>do</strong> plug-in JBoss Tools, já adiciona esses elementos configura<strong>do</strong>s em<br />
um projeto Facelets.<br />
Para configurar o arquivo faces-config.xml por completo, você precisa adicionar a classe Controle e<br />
<strong>de</strong>terminar a navegação das futuras páginas.<br />
A Listagem 3 mostra as configurações necessárias no arquivo faces-config.xml.<br />
Listagem 3 – O arquivo faces-config.xml<br />
…<br />
<br />
controle<br />
<br />
br.com.integrator.controller.Controle<br />
<br />
session<br />
<br />
<br />
/cadastro.xhtml<br />
<br />
cadastra<strong>do</strong>s<br />
/cadastra<strong>do</strong>s.xhtml<br />
<br />
<br />
<br />
/cadastra<strong>do</strong>s.xhtml<br />
<br />
cadastro<br />
/cadastro.xhtml<br />
<br />
<br />
...<br />
A página cadastra<strong>do</strong>s.xhtml será exibida quan<strong>do</strong> houver a string cadastra<strong>do</strong>s. E cadastro.xhtml será<br />
exibida quan<strong>do</strong> houver a string cadastro.<br />
Página 14<br />
www.integrator.com.br
Figura 15 – Navegação das páginas<br />
O arquivo web.xml<br />
Para ter uma aplicação Web utilizan<strong>do</strong> Facelets funcionan<strong>do</strong>, é necessário também adicionar alguns<br />
elementos no arquivo web.xml.<br />
A principal informação adicionada no <strong>de</strong>ployment <strong>de</strong>scriptor para trabalhar com Facelets é mostra<strong>do</strong><br />
na Listagem 4 a seguir:<br />
Listagem 4 – O arquivo web.xml<br />
…<br />
<br />
javax.faces.DEFAULT_SUFFIX<br />
.xhtml<br />
<br />
...<br />
Observan<strong>do</strong> a configuração, você percebe que o facelets vai utilizar o arquivo com extensão .xhtml<br />
para ren<strong>de</strong>rizar a página JSF, que também foi exibida na configuração <strong>do</strong> arquivo faces-config.xml.<br />
As páginas da aplicação<br />
Com o direito sobre o diretório WebContent, no Eclipse IDE, na view Package, selecione New ><br />
XHTML File no menu <strong>de</strong> contexto.<br />
Na caixa <strong>de</strong> diálogo New File XHTML, digite cadastro no campo Name e clique no botão Next.<br />
Página 15<br />
www.integrator.com.br
Figura 16 – Crian<strong>do</strong> uma página XHTML no Eclipse IDE<br />
Na segunda e última etapa da criação da página XHTML, você tem uma série <strong>de</strong> Taglibs que po<strong>de</strong>m<br />
ser adicionadas a página que será gerada. Marque JSF Core e JSF HTML e clique no botão Finish.<br />
Figura 17 – Adicionan<strong>do</strong> as taglibs ao <strong>do</strong>cumento<br />
Uma página XHTML Facelets possui o seguinte cabeçalho:<br />
<br />
Página 16<br />
www.integrator.com.br
Com os atributos xmlns:f e xmlns:h você configura os valores para as tags Core e HTML <strong>do</strong> JSF.<br />
Altere a página cadastro.xhtml para o mostra<strong>do</strong> na Listagem 5 a seguir.<br />
Listagem 5 – A página cadastro.xhtml<br />
…<br />
<br />
Trabalhan<strong>do</strong> com Facelets <br />
<br />
#cadastro{<br />
margin:0;<br />
display:block;<br />
position: relative;<br />
height: auto;<br />
float: left;<br />
padding-bottom: 10px;<br />
}<br />
#cadastro fieldset{<br />
padding-left: 25px;<br />
bor<strong>de</strong>r: solid #CCCCCC 1px;<br />
margin: 0 auto;<br />
text-align: left;<br />
width: 350px;<br />
padding-bottom: 25px;<br />
}<br />
#cadastro legend{<br />
font-weight: bold;<br />
font-size: 11pt;<br />
letter-spacing: 1px;<br />
padding-bottom: 10px;<br />
}<br />
html>body #cadastro legend{<br />
margin-bottom: 0px;<br />
}<br />
#cadastro .field{<br />
bor<strong>de</strong>r-top: solid #333333 1px;<br />
Página 17<br />
www.integrator.com.br
or<strong>de</strong>r-left: solid #333333 1px;<br />
bor<strong>de</strong>r-bottom: solid #CCCCCC 1px;<br />
bor<strong>de</strong>r-right: solid #CCCCCC 1px;<br />
font-size: 13px;<br />
margin-bottom: 10px;<br />
color: #0E0659;<br />
}<br />
#cadastro label{<br />
display: block;<br />
width: 80px;<br />
float: left;<br />
color: #000;<br />
bor<strong>de</strong>r-bottom: 1px solid #f1f1f1;<br />
}<br />
#cadastro .msg{<br />
padding-left: 5px;<br />
}<br />
#cadastro fieldset {<br />
width:400px;<br />
margin:0;<br />
padding:5px;<br />
}<br />
#cadastro dd span{<br />
padding-left: 5px;<br />
}<br />
<br />
<br />
<br />
<br />
<br />
<br />
Cadastro<br />
<br />
Nome:<br />
<br />
Observan<strong>do</strong> a Listagem 5, você percebe que não precisamos da tag JSF , importantíssima no<br />
<strong>de</strong>senvolvimento sem Facelets. A página é feita em um (X)HTML comum, formatada com CSS,<br />
conten<strong>do</strong> em algumas tags apenas a injeção <strong>de</strong> alguns atributos. O atributo jsfc é o que <strong>de</strong>termina o<br />
componente JSF ao qual aquela tag pertence. Isso realmente facilita a vida <strong>de</strong> um <strong>de</strong>signer que utiliza<br />
um programa diferente <strong>do</strong> Eclipse IDE, como por exemplo o Dremweaver. Dentro <strong>do</strong> atributo jsfc<br />
www.integrator.com.br<br />
Página 19<br />
value="#{controle.cadastro.nome}"<br />
styleClass="field" required="true" /><br />
<br />
<br />
<br />
<br />
E-mail:<br />
<br />
<br />
<br />
<br />
<br />
<br />
Telefone:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
...
temos o que seria o início da tag JSF. Por exemplo, um botão <strong>de</strong> envio em JSF é cria<strong>do</strong> pela tag<br />
e em Facelets po<strong>de</strong> ser feito <strong>de</strong>ssa forma ou injeta<strong>do</strong> no (X)HTML, como valor<br />
<strong>do</strong> atributo jsfc, como por exemplo: jsfc= “h:commandButton”. Outros atributos específicos <strong>do</strong> JSF,<br />
como action, value, required e styleClass também são usa<strong>do</strong>s.<br />
Crie uma nova página e a chame <strong>de</strong> cadastra<strong>do</strong>s.xhtml. Esta página exibirá as informações<br />
armazenadas no List da classe Controle.<br />
A Listagem 6 a seguir exibe a página cadastra<strong>do</strong>s.xhtml.<br />
Listagem 6 – A página cadastra<strong>do</strong>s.xhtml<br />
…<br />
Trabalhan<strong>do</strong> com Facelets <br />
<br />
.table-hea<strong>de</strong>r{<br />
padding: 5px;<br />
background-color: #CCC;<br />
color: #FFF;<br />
}<br />
.col-a{<br />
}<br />
.col-b{<br />
background-color: #EEE;<br />
}<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
www.integrator.com.br
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Novo<br />
<br />
<br />
...<br />
Na página cadastra<strong>do</strong>s.xhtml houve uma mistura <strong>de</strong> tags (X)HTML injetadas com atributos JSF e<br />
tags próprias <strong>do</strong> JSF. Dessa forma, po<strong>de</strong>mos observar que tanto faz utilizar um mo<strong>do</strong> como outro.<br />
Porém, como já foi dito, no caso <strong>do</strong> <strong>de</strong>senvolve<strong>do</strong>r estar trabalhan<strong>do</strong> com um <strong>de</strong>signer Web, os<br />
atributos JSF em tags (X)HTML serão bem mais aceitos, ajudan<strong>do</strong>, inclusive, na limpeza <strong>do</strong> <strong>de</strong>sign da<br />
página.<br />
Página 21<br />
www.integrator.com.br
Figura 18 – Resulta<strong>do</strong> final das páginas Facelets ren<strong>de</strong>rizadas<br />
Página 22<br />
www.integrator.com.br