Buenas Prácticas en el uso de RichFaces

LIBP-0029 (Libro de pautas)

Se deben tener en cuenta las siguientes pautas para mejorar el uso de RichFaces

RichFaces es una librería de componentes para JSF de código abierto mantenida por JBoss. Permite una integración sencilla con las capacidades de AJAX y las aplicaciones de empresa.

Pautas

TítuloCarácter
ValidacionesRecomendada
Roles de seguridadObligatoria
Uso de mensajesObligatoria
Internacionalización de contenidosRecomendada
Tiempos de cargaObligatoria
Optimización en cachéObligatoria
Uso de etiquetasObligatoria
Filtro de corrección de códigoObligatoria
Marcadores de posiciónObligatoria
Manejo de peticionesObligatoria
Manejo del SkinRecomendada

Validaciones

Usar validadores basados en AJAX

Es recomendable el uso de validadores AJAX porque están basados en eventos. Mientras se escribe o cuando se cambia a otro campo puede activarse la validación. Es posible mezclar los validadores estándar, así como os personalizados o el marco Hibernate Validator. Sólo hay que anotar las propiedades de todo.

Roles de seguridad

Indicar los roles y acciones en un fichero de configuración llamado web.xml

Es necesario controlar la representación de un componente dependiendo del usuario. Un administrador al que se le crea un panel de administración es un ejemplo. Mediante RichFaces se identifica un rol de usuario sobre el atributo rendered del componente encargado de manejar la representación. Definiendo la función {rich:isUserInRole(object)} (donde object será el rol definido) se identifica al rol al que pertenece el usuario. Configurando el atributo anterior se podrá presentar u omitir los controles según el rol que se establezca. Para que lo anterior funcione se debe indicar los roles y acciones en un fichero de configuración llamado web.xml.

Uso de mensajes

Usar mensajes propios de RichFaces para informar de un evento

Es conveniente el uso de componentes RichFaces rich:message y rich:messages para los mensajes de JSF, ya que éstos mostrarán un mensaje después de un evento AJAX.
Son altamente personalizables y mantienen soporte CSS. Para personalizar cada parte del componente se añade un marcador para diferentes mensajes tipo: (WARN, INFO, FATAL, ERROR).
Añade sobre un componente estándar que no es necesario indicar el orden de renderizado con etiquetas a4j:outputPanel, tiene predefinidas algunas clases de estilo para diferentes niveles de severidad en los mensajes, y puede agregar una cadena de texto passedLabel que se muestre cuando no haya mensaje de error.

Internacionalización de contenidos

Utilizar componente RichFaces <a4j:loadBundle> para la configuración regional

Es conveniente utilizar el componente RichFaces <a4j:loadBundle> para cargar la configuración regional de la vista y almacenar las propiedades como un mapa de atributos porque otorga a JSF la capacidad de permitir el uso de una referencia a un paquete en particular durante un evento AJAX. Además de la traducción a otros idiomas es importante también la localización, es decir, formato de fechas, moneda, formato de números, medidas etc.

Tiempos de carga

Reducir los tiempos de carga en RichFaces

Se debe reducir el esfuerzo para comprimir los recursos de RichFaces utilizados, tales como imágenes y hojas de estilo antes de su envío, de esta forma se reduce significativamente el tiempo de carga.

Optimización en caché

Optimizar los elementos de RichFaces en caché

Es necesario optimizar el rendimiento de los componentes visuales ya que suelen ser los más pesados. Se añade un filtro al componente del lado del cliente y esto posibilita un aumento significativo del rendimiento.

Uso de etiquetas

Evitar el uso de etiquetas que inhiben las funcionalidades de RichFaces

Se deben utilizar etiquetas que utilizan el concepto de panel de salida tales como <a4j:outputPanel>, en concreto el atributo renderer para definir zonas a actualizar. Este tipo de etiquetas evita que otra etiqueta tipo <f:verbatim>, inhiba la actualización de paneles hijo en respuesta a una petición AJAX.

Filtro de corrección de código

Hacer uso del filtro de corrección de código de RichFaces

Es necesario comprobar que RichFaces usa un filtro para la corrección del código recibido en una petición AJAX. Ya que en el caso de una petición AJAX puede diferir el código validable por el visor y éste no es capaz de realizar correcciones por si mismo.

Marcadores de posición

Utilizar adecuadamente los marcadores de posición de AJAX

Se debe poner un marcador de posición en cualquier lugar con un elemento vacío  y colocar mensajes en el componente AjaxOutput cuando se desee añadir cualquier código a la página. Debe haber un elemento con el mismo ID que existe en la respuesta del servidor, para que las actualizaciones funcionen bien. AJAX sólo debe sustituir elementos y no añadir o suprimirlos.

Manejo de peticiones

Gestionar convenientemente el manejo de las peticiones de AJAX

Se debe crear código compatible con el estándar XML y HTML sin saltarse atributos o elementos requeridos, ya que las peticiones AJAX se realizan por medio de funciones XMLHttpRequest. Cualquier corrección de XML será realizada por el filtro en el servidor, pero muchos efectos indeseados suelen producirse por un código HTML incorrecto.

Manejo del Skin

Utilizar RichFaces para cambiar la apariencia de forma dinámica

Se recomienda, si se desea cambiar la apariencia de la aplicación en tiempo de ejecución, definir una expresión EL dentro del fichero web.xml. Para ello es necesario iniciar la propiedad del skin a un valor inicial.

Contenidos relacionados

Recursos
Área: Desarrollo » Construcción de Aplicaciones por Capas » Capa de Presentación
Código Título Tipo Carácter
RECU-0127 Arquetipo JSF con Richfaces Arquetipo Software Recomendado
RECU-0128 Controles RichFaces incluidos en el UI Referencia Recomendado
RECU-0129 Guía para personalizar un control RichFaces Referencia Recomendado
RECU-0134 RichFaces Referencia Recomendado