Uso de Facelets y ICEfaces en Netbeans 6.5

Hace unos días una amiga me mencionaba que le hicieron de la comparación entre Struts y JSF algo muy curioso que me contó fue que le dijeron que Struts es mucho mas rápido que JSF, que tan cierto sea esto no me consta, ojala alguien pueda confirmarlo, pero de todas formas como informático siempre tengo la misión de buscar la eficiencia en mis aplicaciones aún cuando la tecnología que estoy usando de por si sea de las más veloces, así que por esa razón he decidido utilizar Facelets en mis proyectos del trabajo, en lugar de JSP convencionales.

¿Pero en realidad que es Facelets?, para entenderlo enumerare sus características:
  • Es un framework para trabajar con plantillas.
  • Creación de componentes personalizados.
  • Utilización de etiquetas lógicas.
¿Pero que diferencia Facelets de los JSP?
  • JSP son etiquetas para plantillas que al compilarse generan servlets.
  • Facelets es un lenguaje de plantillas para construir un árbol de componentes, no un servlet.
  • Por otra parte Facelet fue creado para cumplir con el ciclo de vida de JSF, al contrario de los JSP que el ciclo de vida de los servlet producidos es independiente al de JSF.
Como aquí no solo se trata de solamente conocer la tecnología al estilo del Sr Byte (no se vayan a molestar compas, recuerden que soy fiel lector suyo), así que como es costumbre en este su espacio curvilíneo desarrollare un ejemplo practico de como utilizar Facelets, ICEfaces y Netbeans 6.5 de forma muy simple.

Lo primero es tener instalado el plugin de ICEfaces, luego debemos instalar el plugin de Facelets, esto es muy sencillo, se hace mediante el menú "Tools" de Netbeans, la ruta es Tools -> Plugins, en la pantalla de plugins nos posicionamos en la pestaña de "Available plugins" buscamos el que se llama Facelets Support, lo marcamos y procedemos a instalarlo.

Ya teniendo instalado los respectivos plugins, procedemos a crear un proyecto Web, en este ejemplo le pondré de nombre EjemploFacelets y ocupare como servidor Tomcat 6.0.18 que ya viene integrado con Netbeans.


Al dar siguiente seleccionaremos los frameworks ICEfaces y Facelets, notamos que al posicionarnos sobre el framework Facelets, en la parte de abajo aparece las propiedades de configuración del framework, para este debemos ubicarnos en la pestaña "Libraries" y en la propiedad "Register Libraries" seleccionamos la opción Facelets ICEfaces Run-Time 1.7.2 y damos clic en finalizar.


Luego de creado veremos que se nos abrirá un jsp llamado welcomeJSF.jsp ese no lo utilizaremos así que yo siempre procedo a borrarlo, la estructura del proyecto quedará de la siguiente manera:

Vemos que solamente hay un jsp, ese lo editaremos como página de inicio en web.xml ya que este redireccionara a nuestra pagina template-client, ahora lo curioso y nuevo aquí es que aparecen dos archivos xhtml, que apartir de ahora allí trabajaremos nuestras etiquetas y estos por así decirlo se traducirán a jps.

Procedemos a abrir el archivo forward.jsp y lo editamos para que en la etiqueta donde redirecciona la página destino nada mas cambiamos la extensión de la página a donde se redireccionara de jsf a jspx.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<jsp:forward page="template-client.jspx"/>

Ahora abrimos el archivo web.xml en vista XML y en el tag de welcome-file-list debe quedar así:


<welcome-file-list>
<welcome-file>forward.jsp</welcome-file>
</welcome-file-list>


Lo guardamos y podemos hacerle deploy al proyecto y accedemos mediante la ruta http://localhost:8084/EjemploFacelets aparecera el siguiente contenido:

Hasta el momento no se ha utilizado nada de ICEfaces haremos un calculo sencillo de colones salvadoreños a dolares estadounidenses, y para ello será necesario crear un ManagedBean de nombre ConversorDolares y tipo Request, para ello hacemos clic en el botón New File de la barra de herramientas de Netbeans, en la lista de Categorías de la nueva ventana seleccionamos "JavaServer Faces" y en la parte derecha "JSF Managed Bean" y damos clic en el botón siguiente.

Ahora le colocaremos el nombre que habíamos mencionado antes al Managed Bean y que sea de tipo request, en el campo package escribimos el paquete donde estará alojado nuestro managed bean en mi caso coloque org.dani.ejemplo.facelets


Hecho esto hacemos clic en finalizar, abrimos nuestro Managed Bean y creamos la siguiente propiedad y método.

Ahora editamos el código del archivo template-client.xhtml y se verá así


Realizamos el respectivo deploy accedemos a la misma dirección anteriormente mencionada y veremos lo siguiente:

Comparto el proyecto EjemploFacelets para que puedan estudiarlo mas detenidamente.

Nota: No copie el texto del código ya que no se mira muy bien en blogger y poder ver las tabulaciones es de mucha ayuda para entender los ejemplos.

Comentarios (6)

6 Response to "Uso de Facelets y ICEfaces en Netbeans 6.5"

  1. marlon says:
    jueves, agosto 27, 2009

    hola.. tengo una inquiettud...facelets, de acuerdo a lo que tu expones es un framework que lo utilizas por eficiencia ...pero cuales son las desventajas de usar este framework..??

    SALUDOS!!

  2. Anónimo Says:
    lunes, septiembre 07, 2009

    Facelets es un framework para crear plantillas a tus paginas hechas con Icefaces, desventajas no le veo alguna solo la integración con tu proyecto que es un poco dificil de hacer pero nada del otro mundo.

    Facelets te facilitara hacer los navigation bars, headers y footers de tu aplicacion.

    Saludos

  3. Anónimo Says:
    viernes, noviembre 06, 2009

    tengo una duda, estoy usando Facelets y RichFaces, es normal que recargue toda la pagina cuando navego, porque pongo q solo modifique el content, pero el header, menu no, entonces porque recarga toda la pagina? :s

  4. Anónimo Says:
    martes, noviembre 17, 2009

    Pero esto se puede hacer facilmente con divs normales y algun framework ajax... sea prototype, Ext-js... no veo la ventaja... siento que esto se parese mucho a .Net, a lo mejor tiras menos codigo.. pero no veo una ventaja real!! al final un template con ext-js se ve mucho mejor.

  5. David says:
    miércoles, diciembre 30, 2009

    dejo un interesante link, donde integran de forma rápida y eficiente spring+hibernate+anotaciones y para la capa de presentación jsf+facelets+iceFaces:
    http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=desarrolloRapidoJava

  6. Roberto Neftali says:
    miércoles, junio 02, 2010

    Amigo, una consulta... es posible integrar facelets junto con Visual Icefaces? de ser asi, como lo harias?