Curso (2)

Embed Size (px)

Citation preview

Facelets framework. 4 Clases
Que es Facelets?Cuando JSF fue ideado, la intencin fue reutilizar JSP como principal tecnologa para la creacin de paginas web, dado que es un estndar en la comunidad web. La idea fue hacer natural la adopcin de JSF por medio de etiquetas naturales que ya tienen una adopcin el el mundo java.

Desafortunadamente JSP y JSF no se complementan entre si. JSP se usa para crear paginas web dinmicas pero no para crear arboles de componentes. En JSP los elementos son procesados desde el principio de la pagina hasta el final. JSF, sin embargo, tiene un ciclo de vida mucho ms complejo, generacin de componentes, y una generacin separada en faces claras.

Si se mezcla JSP con JSF, el JSF se renderizara a medida que se vaya encontrando, en cambio los componentes JSF tiene cada uno su propio renderizado. Esto puede traer ciertos problemas.

Facelets llena el gap entre JSP y JSF. Esta centrado en la creacin de arboles de componentes y el entrelazamiento de contenido con el complejo ciclo de vida de JSF. Facelets remplaza a JSP con una muy simple API que es el reflejo de principios simples y esto incorpora numerosas caractersticas que facilitan el desarrollo.

Porque utilizar Facelets?Hay muchas razones por las que usar Facelts antes que JSP para el desarrollo de JSF: No depende del contenedor, Facelts puede trabajar con cualquier implementacin y versin de JSF.

La interaccin entre JSP y JSF puede traer problemas.

Facelets provee templates, que pueden ser reutilizados

Su simpleza maximiza la reutilizacin, es extensible y escalable.

Facets soporta EL (Unified Expression Language)

Facets no requiere ninguna librera especial para el renderizado.

Descargar Facelets. Facelets se puede descargar de la siguiente URL: http://facelets.dev.java.net/El jar que se necesita para trabajar con Facelets es jsf- facelets.jar y las dependencias puede ser buscadas en el directorio lib.

Si usan maven la dependencia es:

com.sun.faceletsjsf-facelets1.1.6

Configuracin Para configurar un proyecto web para que use Facelets en necesario configurar el Web Descriptor (web.xml) agregando lo siguiente:

.............. javax.faces.DEFAULT_SUFFIX .xhtml

De esta forma indicamos que nuestras paginas van a finalizar con el subfijo xhtml.Adems como cualquier proyecto JSF hay que agregar el servlet y el servlet-mapping

Faces Servletjavax.faces.webapp.FacesServlet1

Faces Servlet/faces/*

Adems es necesario crear un archivo Configuracin de Faces Descriptor (faces-config.xml) como cualquier proyecto JSF, donde es necesario remplazar el ViewHandler traido por defecto por:com.sun.facelets.FaceletViewHandler de la siguiente manera:

com.sun.facelets.FaceletViewHandler

En faces-config.xml tambin se define las reglas de navegacin.

home /index.xhtml parrot /parrot.xhtml eagle /eagle.xhtml

Como se puede ver se define cada uno de los links a que htmlx debe ir.

Configuracin proyecto????

TagsEs necesario que las paginas Facelets sean un XML valido, cuando se utiliza una librera es necesario que se declare como un namespace, donde podemos mapear la URI a un prefijo como se puede apreciar en el siguiente ejemplo:

En el ejemplo usamos 3 libreras, una XML sin prefijo, otra para Facetlet tag con el prefijo ui y otra bsica de JSF con el prefijo h.En la siguiente tabla se puede ver los namespace ms comunes:

NAMESPACE PREFIX LIBRARY XHTML http://www.w3.org/1999/xhtml -- Facelets Templating http://java.sun.com/jsf/facelets ui JSF Core http://java.sun.com/jsf/core f JSF HTML http://java.sun.com/jsf/html h MyFaces Tomahawk http://myfaces.apache.org/tomahawk t MyFaces Tomahawk http://myfaces.apache.org/sandbox s Sandbox http://myfaces.apache.org/trinidad tr MyFaces Trinidad http://java.sun.com/jstl/core c JSTL Core http://java.sun.com/jsp/jstl/fmt fn JSTL Functions

Si se agrega un componente pero no se agrega el espacio de nombre correspondiente para el componente, habr un error en el momento de compilacin de la pagina.

Carga de las libreras de TagsFacelets usa la siguiente estrategia para cargar las libreras de etiquetas. Primero, busca las libreras en la carpeta /META-INF dentro de los jars. Intenta cargar los archivos que tienen la siguiente forma *.taglib.xml. De esta forma se cargan librera de etiquetas estndares. Luego, facelets chequea las libreras definidas en web.xml, inicializado como parmetros facelets.LIBRARIES. Esta estrategia es ideal para cuando se desea cargar una librera de etiquetas propia.

Varias libreras de etiquetas ya son incluidas en el jar de facelets:Templating library: Contiene las etiquetas para la creacin de plantillas.JSF libraries: Dos libreras de etiquetas las cuales son incluidas por la especificacin de JSF, son libreras incluidas por defecto por Facelets.JSTL: Facelets provee soporte parcial a etiquetas de JavaServer Pages Standard Tag Library (JSTL) . Mientras la librera Function es totalmente soportada, La Core es parcialmente soportada, las etiquetas soportadas son: c:if, c:forEach, c:catch y c:set.

Otras LibrerasPara incluir otra librera de etiquetas se debe agregar la misma en la carpeta /META-INF y adems se debe incluir el import del Taglib dentro de la aplicacin.


Creacin de plantillasEn las plantillas nosotros definimos bsicamente el layout de la pagina, y los estilos. Con la etiqueta ui:insert podemos definir las reas en la pagina que pueden ser sobreescritas, por las paginas que usan la plantilla (clientes). Para usar esta etiqueta es necesario el espacio de nombre: http://java.sun.com/jsf/faceletsEl cliente usa este template con los tags ui:component, ui:composition, ui:fragment, o ui:decorate. Veamos un ejemplo de plantilla:

The Happy Birds Directory The Happy Birds Directory Welcome to the nest!

La pagina que utilice esta plantilla sera algo as:

Hola Mundo!!

Es usada la etiquete ui:composition para referenciar la plantilla utilizada. La etiqueta ui:define es utilizada para indicar a Facelts cual area se va a redefinir. Las plantillas no estn limitadas a un nivel, es posible tener varios niveles de plantillas, de este modo un cliente para un template puede ser un template para otro cliente.
Integracin con JSF
???Introduccin a Ajax. 2 Clases
Diferencias entre AJAX y el modelo sincrnico
Fundamentos de AJAX
Bibliotecas de JavaScript
Usos de Ajax
Completar formularios con campos vinculados
Interactuar con JSF. Validacin en tiempo real
Propagar el estado de la vista en el cliente
Implementacin de Ajax
Richfaces (Librera Componentes Ajax). 16 clases.

Que es Richfaces?RichFaces es un framework web que combina las tecnologas Ajax con JSF. Lo cual permite hacer aplicaciones web con ajax de forma fcil sin preocuparse por mantener complicados mtodos javascripts. RichFaces es un proyecto open sources que permite agregar capacidades Ajax a su aplicacin JSF sin escribir javascript por lo tanto sin preocuparse por la compatibilidad entre distintos browsers.

RichFaces provee 2 conjuntos de libreras:Core Ajax: Contiene componentes que son tiles para ajaxiar las paginas jsf y los componentes estndares de JSF. Tambin provee componentes que generan recursos binarios como imgenes, pdfs, cvs, etc.

UI: Es un conjunto avanzado de etiquetas Jsf que utilizan Ajax usados para agregar caractersticas de una interfaz rica de usuario en su aplicacin. Estos componentes soportan Ajax y estn perfectamente integrados a la librera Core. Adems soportan skills y pueden ser totalmente adaptados a sus necesidades.

Otra caracterstica de RichFace es Component Development Kit (CDK) el conjunto de herramientas usado para crear la librara UI, y puede ser utilizado para crear nuevos componentes.


Integracin jsf-richfaces
Configuracin proyectoLos jars que se deben tener para utilizar RichFace son:richfaces-api-X.Y.Z.GA.jar: Contiene la descripcin de la API (conjunto de interfaces)richfaces-impl-X.Y.Z.GA.jar: Implementacin de la las interfases richfaces-ui-X.Y.Z.GA.jar: Contien la implementacin de clases de componentes del framework.Estos jars son necesario para poder trabajar con RichFaces y se deben poner en la carpeta web-inf/lib del proyecto. Otro jar opcionales son: laguna-X.Y.Z.GA.jar

glassX-X.Y.Z.GA.jar

darkX-X.Y.Z.GA.jar

los cuales se utilizan para los skinks.

Registrar RichFaces.Luego, es necesario registrar RichFaces para lo cual es necesario modificar el web.xml. Primero debemos agregar parametros de contexto:

org.richfaces.SKIN laguna org.richfaces.CONTROL_SKINNING enable

Estos parametros estan relacionados con el skinning de la pagina. El primero parametro indica que sking va utilizar richface y el segundo indica que el framework aplique el sking a los comportamientos estandard tambien. Luego se debe registrar y mapear usando la siguiente configuracin: RichFaces Filter richfaces org.ajax4jsf.Filter richfaces Faces Servlet REQUEST FORWARD INCLUDE Si usted esta utilizando otro nombre de servlet face debe cambiarlo.
Integracin Facelets-richfacesFacelets es un framework opensource que permite el uso de XHTML para paginas JSF, mejorando la performance, legibilidad y productividad. Tambin este ofrece un completo y abanzado sistema de templates, mejora de manejo de errores y componentes muy utiles. RichFaces soporta facelets. Se puede definir vistas Facelets manejadas context-param (como podemos ver en facelts soport) Para soportar Facelets, no debe estar definido FaceletViewHandler en el face-config.xml sino que debe estar definido org.ajax4jsf.VIEW_HANDLERS como un context-param en el web.xml y con esto es suficiente para ser soportado por richface:

org.ajax4jsf.VIEW_HANDLERS com.sun.facelets.FaceletViewHandler


Conceptos Bsicos
Ciclo de vida
ArquitecturaUsted puede utilizar componentes Ajax para invocar pedidos asincronos que son automaticamente sincronizados con el rbol de componentes y actualizar un area de la pagina, sin recargar toda la pagina. La siguiente Imagen fue tomada de la documentacin de Rich Faces y muestra el camino de procesamiento de un pedido:Esto no difiere del estandar JSF y no es necesario escribir javascript para usar componentes Rich Face Ajax.

La arquitectura del framework esta compuesta en 5 partes: Filtro Ajax: Esto es esencial para agregar la capacidad Ajax a sus paginas JSF. Este filtro maneja todos los pedidos (ajax y jsf estandar), corrige y valida el codigo enviado, maneja los scripts, la carga de estilos, recursos de cache, etc. Se debe registrar el filtro en el web.xmlComponentes Ajax: Son similares a los componentes estandar de jsf pero envian pedidos asincronos.Contenedores Ajax: El framework soporta contenedores que describen areas de la pagina web, las cuales van a ser refrescadas sin refrescar toda la pagina web. Se pueden definir varias areas que van a ser refrescadas en una pagina, sin refrescar la pagina. Skinnability: Permite agregar a su aplicacin JSF la capasidad de skinning (temas)RichFaces JavaScript Engine: Esto corre en el cliente y maneja las ajax requests y responces esto es manejado por el framework si necesidad de programar el comportamiento ajax, ni javascripts.

Se puede elegir cuando utilizas Ajax request o request estandar de JSF.


Manejo entre componentes.
Manejo de Errores
Validaciones.
Skins
Manejo de Ajax
Definicin de las Custom Style Classes
Componentes de richfaces:
Ajax Supportsa4j:support, este es el ms importante de los componentes Ajax, lo que permite es agregar capacidad ajax a componentes estndar JSF. El atributo Event indica conque evento el pedido ajax va a ser atachado. El atributo Timeout describe el numero de milisegundos que espera antes de disparar el pedido ajax. El atributo ajaxSingle idica que se debe enviar solo el campo y no todo el formulario.El atributo reRender indica que componente de la pagina se va a redibujar con la respuesta del servidor.


Ajax Validators
Data Iteration
Drag-drop Support
Rich Menu
Rich Trees
Rich Outputs
Rich Input
Rich Selects
Miscellaneous
Semantic Layouts
Que es A4J (Ajax For Java)
Componentes A4J
Paginacin
Que es JQuery?
Integracin richfaces-JQuery

JUnit . Pruebas unitarias. 2 clases.
Que es JUnit?
Configuracin de proyecto
Construir testCase
Construir testSuite

Maven . Gestin y construccin de proyectos. 4 clases.
Que es Maven?
Que provee?
Creacin de Repositorio local
Primeros pasos
Creacin de proyecto
Compilacin del proyecto
Compilando test
Empaquetado e instalacin
Filtrado de recursos
Excluir archivos binarios
Plugins

Hibernate . Framework de ORM. 8 clases.
Introduccin a Hibernate
Repaso conocimientos JDBC y Transacciones.
Configuraciones para Hibernate
Mapeos de Entidades
Mapeos de Colecciones
Mapeos de Relaciones entre entidades
Mapeos de Herencia
Estados de los objetos
Consultas HQL (Hibernate Query Language)
Consultas Criteria y ByExample
Concurrencia y transacciones. Versionado y Bloqueos.
Conceptos avanzados: Tipos propios, Interceptores y eventos.
Cachs en Hibernate.
Validadores
Anotaciones Importantes
Integracin con JPA