Professional Documents
Culture Documents
¿Qué es RichFaces?
En este capítulo, vamos a aprender sobre el proyecto RichFaces y cómo nos puede ayudar a
desarrollar mejores aplicaciones web Ajax más rápidamente.
En primer lugar, vamos a ver algo de su historia, su nacimiento y crecimiento. A partir de ahí
vamos a conocer su funcionamiento (en general), los componentes que están dentro de su
marco, así como lo que podemos hacer con ellos. Por último, vamos a explicar algunas
técnicas avanzadas y empezar a revisar el CDK (Component Development Kit) con un ejemplo
sencillo.
Por otra parte, RichFaces ofrece el gran poder de la skinnability. Esta personaliza la
apariencia de las aplicaciones JSF. Se pueden definir diferentes esquemas de color para crear
temas personalizados o usar las predefinidas. Además, puede administrar los estilos
predefinidos CSS (o añadir los propios) para cambiar la apariencia de los componentes de
interfaz de usuario de la biblioteca de una manera sencilla y coherente (incluso se puede
utilizar de forma dinámica XCSS para personalizar los estilos CSS). La característica de
skinnability de RichFaces pueden aplicar temas a los elementos estándar de HTML, como
input, select, textarea, fieldset, y así sucesivamente.
Core Ajax: la biblioteca principal contiene componentes que son útiles para "ajaxizar" páginas
JSF y componentes estándar de JSF. Es muy sencillo definir áreas de Ajax y para invocar
peticiones Ajax con el fin de actualizar las áreas (veremos cómo se hace esto muy pronto).
Además, proporciona un componente de generación de recursos binarios sobre la marcha (por
ejemplo, el código generado por las imágenes, archivos PDF, archivos CSV, y así
sucesivamente).
Otros extras son el apoyo Facelets, la posibilidad de crear los componentes de código en Java
(con documentación de la API), la API de JavaScript de los componentes que interactúan con
ellos desde el lado del cliente (si desea utilizar JavaScript), y por último pero no menos
importante, es que tiene el apoyo una comunidad muy fuerte.
Como puede ver, RichFaces tiene un muchisimas características muy poderosas que pueden
ayudar con el desarrollo de aplicaciones ricas. En los párrafos siguientes, vamos a hacer una
breve reseña del marco para empezar a comprender todas las posibilidades que tiene.
Un poco de historia
RichFaces proviene del marco Ajax4JSF. Fue creado por Alexander Smirnov, quien se unió a
Exadel en 2005 con el fin de continuar con el desarrollo. La idea era juntar todas las
características de Ajax en el nuevo marco de JavaServer Faces.
La primera versión comercial fue lanzado en marzo de 2006 con el nombre de Exadel VCP. En
el mismo año, se dividió en dos proyectos Ajax4Jsf (open source) y RichFaces (versión
comercial).
Ajax4jsf proporcionan el marco básico y los componentes Ajax para "ajaxizar" los componentes
JSF en una página (soporte Ajax en las páginas JSF). RichFaces fue un componente JSF
comercial para las bibliotecas Ajax.
En marzo de 2007, Exadel y JBoss (una división de RedHat) anunciaron una alianza para abrir
el código fuente de RichFaces y los dos proyectos se fusionaron en un único proyecto de
fuente abierta llamado simplemente "RichFaces". Fue una buena decisión para resolver los
problemas de compatibilidad con la versión que tenían los dos proyectos por separado.
Hoy en día, el proyecto se está moviendo muy rápido con la ayuda de la comunidad de
usuarios que participan con el equipo RichFaces que también deciden la evolución futura que
el marco tendrá (como que carácterística se desarrollará más, que componente nuevo se debe
de hacer en primer lugar, etc.)
http://www.jboss.org/jbossrichfaces/,
y el foro de usuarios en
http://jboss.com/index.html?module=bb&op=viewforum&f=261.
El marco Ajax
El marco Ajax RichFaces es una biblioteca de componentes JSF que añade la capacidad Ajax
a sus páginas, a diferencia del apoyo tradicional y limitada de los componentes Ajax. Esto
significa que usted puede utilizar componentes Ajax para invocar peticiones Ajax que se
sincronizan automáticamente con el árbol de componentes JSF y actualizan las áreas
individuales sin tener que recargar toda la página Web. En la imagen siguiente, tomada de la
documentación de Jboss, muestra el flujo del proceso de solicitud:
No es diferente de una página estándar de JSF, y ni siquiera necesita escribir código
JavaScript utilizando al utilizar los componentes Ajax RichFaces. Dentro de la página usted
puede definir las diferentes áreas que desea actualizar, después de la petición Ajax.
1. Ajax Filter: Esto es esencial para agregar capacidades Ajax para su aplicación JSF
utilizando RichFaces. Administra todas las solicitudes (tanto Ajax y JSF estándar), corrige y
valida el código de marcado enviado, administra la secuencia de comandos y la carga de estilo,
la caché de los recursos y así sucesivamente. Usted tiene que colocar el filtro en el archivo
web.xml.
2. Componentes de Acción Ajax: Son los componentes estándar de JSF que puede utilizar
para enviar peticiones Ajax (los veremos muy pronto).
4. Skinnability: Esta es una parte muy útil de la estructura y añade la capacidad de cambiar el
aspecto a su aplicación (más tarde, vamos a verlo en detalle).
Puede decidir cuándo utilizar una petición JSF estándar (con una recarga completa de la
página web) o cuándo utilizar una solicitud Ajax. En este último caso, sólo la región que
participan Ajax es procesada, y el marcado Delta Ajax es enviado de vuelta al cliente después
de que el filtro se ha analizado y verificado.
Los componentes del marco RichFaces tienen una gran cantidad de atributos de Ajax, que son
muy útiles para administrar las opciones que Ajax tiene.
Los componentes de atributos siguientes son muy importantes y se puede encontrar en todos
los componentes Ajax permitidos en el marco RichFaces:
reRender: Con el fin de decidir qué área debe ser actualizado después de una petición
ajaxRendered: Si es cierto, el área se actualiza después de cada petición Ajax (incluso si no
es en el atributo reRender).
limitToList: con el fin de forzar el motor de JavaScript para actualizar las únicas áreas en
el atributo reRender.
Vamos a ver, estos atributos en una gran cantidad de componentes del marco. Por lo tanto, es
útil saber cómo funcionan.
Contenedores Ajax
El marco Ajax RichFaces contiene componentes específicos que describen las áreas Ajax e
implementan la interfaz AjaxContainer. El contenedor Ajax principal es la raíz de la vista por
defecto, por lo tanto, no es necesario definir un contenedor Ajax para toda la página. Sin
embargo, es muy útil saber cómo utilizar el componente a4j:region para crear nuevas
regiones Ajax y así optimizar las peticiones Ajax.
RichFaces tiene un componente que puede ser utilizado como un marcador de posición:
a4j:outputPanel.
Validadores Ajax
Otra característica del marco Ajax son los validadores Ajax. Estos trabajan con el sistema de
validación de JSF. Sin embargo, como están basados en eventos se puede utilizar para activar
la validación mientras se está escribiendo, o cuando se cambia a otro campo, y así
sucesivamente. Puede mezclar los validadores estándar así como los personalizados y
también utilizar el marco Hibernate Validator (sólo tiene que anotar las propiedades de todo
para añadir nuevos validadores).
Componentes RichFaces
El marco RichFaces contiene muchos componentes JSF para Ajax añadir a nuestras
aplicaciones de una manera muy sencilla, sin necesidad de saber nada de JavaScript (pero si
lo conoce, tiene muchas características para utilizar el marco dentro de su código
personalizado JS).
Hay muchisimos componentes para distintos tipos de tareas (como la interacción, entrada,
salida, arrastrar y soltar, validación, y así sucesivamente). Vamos a explicar cómo funcionan
conforme los vayamos utilizando en los próximos capítulos.
A lo largo del libro, vamos a desarrollar una aplicación que utiliza RichFaces. Mientras hacemos
esto, vamos a ver cómo funcionan esos componentes en la práctica, utilizando ejemplos reales
que cubren todas las funcionalidades.
Por lo tanto, si necesita cambiarlos, entonces hay que buscar el valor y reemplazarlo
manualmente cada vez que sea necesario. Como puede imaginar, este es un proceso
propenso a errores que pueden traer muchos problemas e inconsistencias de diseño.
Además, si necesita una interfaz que soporta varios conjuntos de color y se deben ajustar
sobre la marcha, necesitas trabajar con varios archivos CSS que tienen las mismas
declaraciones pero diferentes colores, además de mantener otras actualizaciones .
Resumen
En este capítulo, hemos aprendido los objetivos del marco RichFaces, ¿cuáles son sus
componentes (el marco Ajax, los componentes de RichFaces y skinnability), y lo que puede
hacer al usarlo en una aplicación web.