Artigo Java Magazine 61 - Criando templates de telas no JSF

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (3)  (0)

Este artigo apresenta como instalar, configurar e usar o Facelets numa aplicação Web com JSF.

Esse artigo faz parte da revista Java Magazine edição 61. Clique aqui para ler todos os artigos desta edição

Criando templates de telas no JSF

Configurando e usando o Facelets numa aplicação Web com JSF

Veja também as mini-entrevistas com Ed Burns, spec lead da JSR-314 :JSF 2.0 e Jacob Hookom, criador do framework Facelets

 

De que se trata o artigo:

O Facelets é um framework para desenvolver template de telas em conjunto com o JavaServer Faces. Este artigo apresenta como instalar, configurar e usar o Facelets numa aplicação Web com JSF.

 

Para que serve:

Este framework será incorporado na especificação do JSF 2.0 com algumas modificações para se tornar o mecanismo padrão para descrever uma tela Web com JSF. Ele permitirá a definição de templates de telas para promover o reuso e facilitar a manutenção do layout e padrão visual das interfaces Web.

 

Em que situação o tema é útil:

Como o Facelets se tornará uma tecnologia padrão e mantida pelo JCP em conjunto com o JSF, será o mecanismo que substituirá o JSP no processo de definição de uma tela Web. O Facelets no JSF permitirá descrever a camada de apresentação de uma aplicação Web. Apesar da nova especificação JSF ainda suportar JSP, o Facelets será considerado o mecanismo preferencial que todo desenvolvedor deverá conhecer para conseguir usar os novos recursos do JSF 2.0.

 

Criando templates de telas no JSF – Resumo DevMan:

O Facelets é um framework para suporte ao desenvolvimento de telas na Web com o JavaServer Faces (JSF), assim como o Tiles é para o Struts e os Tag Files são para o JSP. Esta tecnologia será incorporada à especificação JSF 2.0 para substituir o JSP como mecanismo padrão para gerar a camada view de uma aplicação Web. Além disso, o Facelets permitirá a definição de templates de telas e a implementação de novos componentes visuais sem a necessidade de escrever códigos Java.

Introdução

O Facelets é uma tecnologia de código aberto e uso livre, sob a licença CDDL 1.0, que estabelece uma linguagem de templates para suportar a criação da árvore de componentes das telas JSF. Esta tecnologia permite o reuso de padrões de telas e a composição de componentes JSF para a formação de novos componentes.

JavaServer Faces (JSF) é uma tecnologia padronizada e mantida pelo Java Community Process (JCP) para o desenvolvimento de aplicações que permite o uso de um modelo de componentes para definição e renderização de uma tela de sistema na Web. Como o JSF permite o desenvolvimento baseado no padrão de projeto MVC, o Facelets é a parte 'View' deste padrão a ser incorporada na especificação para facilitar o desenvolvimento de telas Web com JSF. Isto tornará o Facelets o mecanismo padrão para desenvolvimento de aplicações Web e não mais JSP, que continuará a ser uma alternativa possível, mas não preferencial. Veja a entrevista com Ed Burns, líder da especificação do JSF 2.0 no JCP, no quadro anexo com comentários sobre como o Facelets influenciará na nova especificação.

Neste artigo, faremos uma “introdução completa” ao Facelets: discutindo tecnicamente seus recursos, construindo uma aplicação simples e mostrando como utilizar a tecnologia nos principais IDEs.

O que são templates

Durante o desenvolvimento de uma aplicação web com diversas telas, percebe-se que várias destas têm uma estrutura semelhante. Para promover o reuso desta estrutura comum e facilitar a futura manutenção do padrão visual deste sistema, são utilizados um ou mais modelos de páginas (templates). Um template define um desenho padrão para as telas e áreas substituíveis para a troca de conteúdo durante a renderização da interface para o usuário.

Existem diversas maneiras de realizar a definição de templates e a composição das diversas telas do sistema com estes templates.

Templates em aplicações Web tradicionais: JSP/Servlets

Em aplicações Web tradicionais este problema é resolvido criando uma página JSP que inclui outras páginas JSP que representam cada parte que compõe a página, aumentando o reuso e facilitando a manutenção das páginas.

Templates em aplicações Struts

Em aplicações Struts, este problema foi resolvido muito eficientemente com o framework Tiles, criado como um plugin para o Struts.

Templates em aplicações JSF

Ao tentar aplicar as lições aprendidas no desenvolvimento de aplicações Web com JSP/Servlets e Struts à JSF, alguns desafios foram encontrados:

·         Inclusão de páginas dificultada devido ao Content Interweaving Problem, que causava o embaralhamento dos componentes da página apresentada pelo browser quando as páginas incluídas utilizavam componentes JSF aninhados em elementos HTML. Veja o artigo “Improving JSF by dumping JSP” de Hans Bergsten;

·         Incompatibilidade de utilização do framework Tiles em aplicações baseadas em MyFaces e JSF RI, tornando praticamente inviável sua utilização com a implementação de referência JSF;

·         Dificuldade na criação de componentes visuais compostos por outros componentes visuais.

 

Foi neste cenário que o framework Facelets nasceu. Um mecanismo de template baseado em XML, compatível com qualquer implementação de JSF (criado especificamente para JSF), permitindo mesclar HTML e JSF indiscriminadamente. Diferentemente das páginas JSP que foram inventadas muito antes.

O desenvolvedor Jacob Hookom criou um projeto open source e o batizou de Facelets. Este projeto tem a intenção de resolver as limitações citadas e prover uma tecnologia alternativa ao JSP, atendendo às necessidades especificas do JSF. Veja no quadro anexo uma entrevista com este desenvolvedor que nos conta qual foi a sua principal motivação ao criar o Facelets.

Instalando o Facelets numa aplicação Web

O download do Facelets pode ser realizado a partir da página do projeto, hospedada no site java.net com a seguinte URL: https://facelets.dev.java.net/.

Um arquivo zip com uma versão estável pode ser obtido a partir da página de download. Este arquivo conterá o código fonte, a documentação em formato Javadoc da API, uma documentação texto para o desenvolvedor, aplicações Web de exemplo e os JARs necessários para usar o Facelets.

Após o download, será necessário criar uma aplicação Web e incorporar os JARs necessários para utilizá-lo. O Facelets deve ser usado numa aplicação com suporte ao JSF 1.1 ou 1.2. Esta aplicação deve ter instalado uma implementação de JSF como, por exemplo, o JSF-RI ou o MyFaces.

Apresentamos neste artigo um passo a passo para criar uma aplicação JSF com Facelets no Eclipse ou NetBeans utilizando JSF 1.2. Para isso, o arquivo jsf-facelets.jar deve ser adicionado ao diretório /WEB-INF/lib da aplicação Web.

A aplicação Web também deve conter no classpath a JSF API e uma implementação de JSF (JSF RI ou MyFaces). Então, os seguintes JARs devem estar presentes: jsf-api.jar, jsf-impl.jar, commons-beanutils.jar, commons-collections.jar, commons-digester.jar e commons-logging.jar.

Configurando a aplicação Web e o JSF com o Facelets

O seguinte fragmento de configuração deve ser adicionado no deployment descriptor (web.xml) da aplicação:

 

  <context-param>

    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>

    <param-value>.xhtml</param-value>

  </context-param>

 

Este parâmetro de configuração indicará para a implementação de JSF que os arquivos que definirão as telas terão a extensão xhtml e não mais jsp.

Consulte outras opções de configuração nos quadros: “Outras opções de configuração no Deployment Descriptor”, “Protegendo os arquivos XHTML” e “Configurando Facelets em aplicações que utilizam outros Frameworks”.

A Listagem 1 apresenta uma versão completa do arquivo web.xml com as configurações de uma aplicação Web baseada na implementação de referência do JSF e no Facelets. De acordo com estas configurações, as telas JSF serão renderizadas a partir de arquivos texto baseados em XHTML e com extensão xhtml. E o ciclo de vida do JSF será iniciado a partir de URLs com a extensão .jsf. Por exemplo, a seguinte URL iniciará o ciclo de vida através do FacesServlet: http://localhost:8080/<contexto>/telaExemplo.jsf, onde o arquivo telaExemplo.xhtml deve existir no diretório raiz ou no arquivo WAR da aplicação Web.

O Facelets é integrado ao JSF através da substituição do componente padrão do JSF, chamado ViewHandler, por outro chamado FaceletViewHandler. Este componente será responsável pela criação da árvore de objetos que representa a tela JSF a partir de arquivos XHTML e não mais a partir de JSP.

 

Listagem 1. Deployment Descriptor de uma aplicação Web baseada no JSF-RI e Facelets

<?xml version="1.0" encoding="UTF-8"?>

 

<web-app version="2.5"

         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/web-app_2_5.xsd">

 

    <context-param>

        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>

        <param-value>.xhtml</param-value>

    </context-param>

 

    <context-param>

        <param-name>facelets.DEVELOPMENT</param-name>

        <param-value>true</param-value>

    </context-param>

 

    <context-param>

        <param-name>facelets.REFRESH_PERIOD</param-name>

        <param-value>10</param-value>

    </context-param>

 

    <context-param>

     "

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?