Olá gandb,
Também tive alguns problemas quando iniciei com FaceLets,
Mais quando aprendi a utilizá-lo, os resultados foram bastante compensadores,
A construção da view fica extremamente rápida, vale a pena o esforço,
sem contar a possibilidade de empregar templates, que são de grande auxílio.
Vamos ao que interessa, tenho aqui um projeto default de facelets para eclipse:
-
Trata-se de um projeto dinâmico para web, escolhi essa opção quando criei o projeto no eclipse;
-
O projeto tem uma pasta WebContent, que contêm uma pasta WEB-INF. que contêm uma pasta lib;
-
A pasta lib contêm os seguintes arquivos jar:
common-annotations.jar
commons-beanutils.jar
commons-collections.jar
commons-digester.jar
commons-logging.jar
el-api.jar
el-ri.jar
jsf-api.jar
jsf-facelets.jar
jsf-impl.jar
standard.jar
obs: sem bibliotecas commons o FaceLets não funcionou !
- A pasta WEB-INF com dois arquivos faces-config.xml e web.xml
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
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-facesconfig_1_2.xsd">
<managed-bean>
<managed-bean-name>portal</managed-bean-name>
<managed-bean-class>br.usp.pea.lso.PortalBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<!-- from project setup -->
<application>
<view-handler>
com.sun.facelets.FaceletViewHandler
</view-handler>
</application>
<!-- portal.xhtml para conceitos.xhtml -->
<navigation-rule>
<from-view-id>/portal.xhtml</from-view-id>
<navigation-case>
<from-outcome>conceitos</from-outcome>
<to-view-id>/conceitos.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
web.xml com configurações para 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">
<!-- Use Documents Saved as *.xhtml -->
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<!-- Special Debug Output for Development -->
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<!-- Optional JSF-RI Parameters to Help Debug -->
<context-param>
<param-name>com.sun.faces.validateXml</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.verifyObjects</param-name>
<param-value>true</param-value>
</context-param>
<!-- Faces Servlet -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
</web-app>
- Na pasta WebContent com dois arquivos para a aplicação template.xhtml e portal.xhtml
template.xhtml - código do template
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<head>
<ui:insert name="header">
<ui:insert name="titulo">Default TITULO</ui:insert>
<ui:insert name="icone">Default ICONE</ui:insert>
<ui:insert name="css">Default CSS</ui:insert>
</ui:insert>
</head>
<body>
<h:form>
<ui:insert name="cabec">Default Cabecario</ui:insert>
<ui:insert name="body">
<ui:insert name="pagina">Pagina Default</ui:insert>
</ui:insert>
</h:form>
</body>
</html>
portal.xhtml com o código para substituir os templates.
com tudo isso, funcionou o projeto no eclipse !
Levei também alguns dias quebrando a cabeça com o FaceLets, mais valeu a pena mesmo !
Muito bom, vale o esforço para domina-lo.
Inclusive funciona em conjunto com a ferramenta JQuery.
Fique atento ao script Build ANT para gerar o deploy para aplicação.
Observação I: estou utilizando servidor web GlassFish;
Observação II: O Facelets quando instalado têm uma view para debug da aplicação quando ocorre algum erro, trata-se de outro detalhe que compensa a instalação do FaceLets;
Sorte, qualquer dúvida estamos por ai,
Domingos Bernardo
PEA - Departamento de Engenharia de Energia e Automação Elétricas
USP - Escola Politécnica de São Paulo