Professional Documents
Culture Documents
Introduo
Facelets
Framework de cdigo aberto e uso livre, sob licena CDDL 1.0, criado pelo Jacob Hookom Foi criado especificamente para JSF,resolvendo deficincias encontradas nas verses iniciais Ainda no uma tecnologia padro mantida pelo JCP Uma linguagem de descrio de pginas (PDL) criada especificamente para JSF Ser incorporado no JSF 2.0, substituindo JSP
Facelets
Funciona com as especificaes JSF 1.1 e JSF 1.2, incluindo a RI da Sun e o Apache MyFaces Possibilidade de especificar a hierarquia de componentes de arquivos separados (UICompositions) Relatrio preciso do Erro (Linha, Tag e Atributo) Especifica Tags em arquivos separados ou at mesmo em Jars Separados Suporte completo a EL, incluindo funes
Facelets
Utiliza o atributo 'jsfc' da mesma maneira que o 'jwcid' do Tapestry Transforma < input type="text"/ > em < h:inputText/ > - Os Web Designers agradecem No necessita RenderKits especiais No depende do Container Web
Facelets
Facelets
Facelets Principais Funcionalidades Disponibiliza um novo compilador de pginas baseado em XHTML Realiza a criao da rvore de componentes das telas JSF Suporta as custom tags: JSF Core, JSF HTML e JSTL
Facelets Principais Funcionalidades Criao de templates de tela JSF e reuso (herana) de telas Composio de componentes JSF para a formao de novos componentes Definio de custom tags para usar os novos componentes visuais
Facelets Principais Funcionalidades Facelets possui vrias vantagens que vo desde a facilidade na criao e reutilizao de pginas e componentes, melhor depurao de erros, AJAX nativo, uma melhor compatibilidade entre XHTML, JSTL e os componentes, ele independente de web container, e claro, Facelets de 30% a 50% mais rpido que JSP
Facelets
O Facelets oferece um timo mecanismo para gerao de templates, o que torna a construo de uma aplicao toda com o mesmo layout, muito simples e rpida, alm de evitar a repetio de cdigo html
Na criao do template, definimos os espaos que podem ser substitudos no template atravs da tag <ui:insert> e o atributo name dessa tag define o nome desse espao.
<div id="esquerda"> <ui:insert name="menu" /> </div> <div id="centro"> <ui:insert name="corpo" /> </div>
Facelets
Para informarmos que estamos utilizando um template inclumos a tag <ui:composition> com o seu atributo template que define o diretrio onde est o template.
<ui:composition template="/pages/TemplateDiv.xhtml"> Utilizando a tag <ui:define> definimos o que vai preencher o espao do template
<ui:define name="menu"> <h:outputText value="Menu1:" /><br/> <h:outputText value="Menu2:" /><br/> <h:outputText value="Menu3:"/><br/> </ui:define>
Facelets Instalao
Download do Facelets: https://facelets.dev.java.net/ Adicionar o JAR em /WEB-INF/lib: jsf-facelets.jar Adicionar configurao no web.xml:
<context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value> </context-param>
Facelets Instalao
Adicionar configurao no faces-config.xml:
<application> <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> </application> O Facelets estar pronto para ser usado! ;-)
Facelets Criando Templates com Facelets Criar um arquivo texto com extenso XHTML no projeto Definir as custom tags JSF Core e JSF HTML via XML namespaces Adicionar a custom tag do Facelets via XML namespace
Facelets
Criando Templates com Facelets
<div id="geral"> <div id="topo"> <ui:insert name="topo/> </div> <div id="esquerda"> <ui:insert name="esquerda/> </div> <div id="conteudo"> <ui:insert name="conteudo/> </div> <div id="direita"> <ui:insert name="direita/> </div> <div id="rodape"> <ui:insert name="rodape">Copyright ...</ui:insert> </div>
Exerccio 1 Criar uma nova aplicao JSF sem facelets Instalar / Configurar o Facelets Criar templates Left , Center
#esquerda { width: 10%; float: left; border: 1px solid black; background-color: blue; }
#centro { margin-left: 175px; width: 85%; border: 1px solid black; background-color: red; }
Exerccio 2 Copiar o cadastro em JSF feito anteriormente e modificar para utilizar o Facelets
Facelets Etapas: Criar a biblioteca Facelets (WEB-INF) Declarar a biblioteca no web.xml Criar o Componente Importar usando o namespace
Facelets
Etapas: 3- Criar o componente
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"> <ui:composition> <h:outputText value="CPF:"/> <h:inputText value="#{value}" required="true" id="#{id}" requiredMessage="Campo Obrigatrio" styleClass="cpf" validatorMessage="Formato errado!" onblur="validaCPF(this);> <rich:jQuery selector="##{id}" query="mask('999.999.999-99')" timing="onload"/> <f:validateLength maximum=11" minimum=11"/> </h:inputText> <h:message for="#{id}" /> <br/> </ui:composition> </html>
Facelets Agora para usar, basta importar o namespace e inserir o componente na pgina ....
xmlns:f=http://java.sun.com/jsf/core xmlns:g=http://meuscomponentes.com/jsf xmlns:ui="http://java.sun.com/jsf/facelets">
1 - Criar a biblioteca Facelets 2 - Declarar a biblioteca no web.xml 3 - Criar o Componente 4 - Importar usando o namespace
Exerccio 4 (opcional)
O Facelets no JCP e JSF2.0 A popularidade chamou a ateno do JCP Ser incorporado especificao JSF 2.0 (JSR-314) A especificao tambm ser baseada no JSFTemplating Passar por melhorias ao ser incorporado no JSF 2.0 Suportar registro de listeners, validadors, converters em componentes visuais criados via XHTML Ser a linguagem padro para descrever telas JSF (Page Description Language - PDL)
Concluso:
Ser a linguagem padro de descrio de pginas Elimina a falta de um mecanismo de templates integrado ao JSF Permite criao de componentes de UI e definio de custom tags Permite o reuso de definio de estrutura de telas JSF Permite a separao da definio de padro visual da definio das telas J pode ser usado hoje com o JSF 1.2 e 1.1!
FIM