miércoles, 29 de septiembre de 2010

ICEfaces - Partial Submit - Procesamiento Inteligente de Formularios

Partial Submit - Intelligent Form Processing


(Submit Parcial - Procesamiento Inteligente de Formularios)


Voy a dedicar este post a recordar el funcionamiento del "Partial Submit" (o procesamiento inteligente de formularios) a partir de la propia documentación oficial de ICEfaces (Partial Submit).

ICEfaces nos proporciona un modelo de interacción con el usuario muy depurado y de alto nivel para el procesamiento inteligente de formularios durante el desarrollo de aplicaciones ICEfaces. Con JSF, el mecanismo de submit normal inicia el ciclo de vida de una aplicación JSF, y como tal, determinadas funcionalidades no se permiten, como por ejemplo, la validación del formulario en el cliente.

El "Partial Submit" (o submit parcial) resuelve estas limitaciones incluyendo el mecanismo de eventos de JavaScript dentro del ciclo de vida de la apilcación JSF mediante el submit automático. Este submit automático es parcial en el sentido de que sólo se realiza una
validación parcial del formulario. El módulo "Ajax bridge" lleva a cabo una monitorización inteligente para identificar el control asociado al submit parcial, deshabilitando la propiedad "required" del resto de controles del formulario. A partir de aquí, el ciclo de vida JSF se desencadena de una forma normal, tras el cual se reestablece las
propiedades "required" a su estado previo.

El efecto global del submit parcial permite ejecutar el proceso de validación completamente, sin embargo aquellos campos del formulario que se encuentren vacíos no provocarán ningún error de validación. La figura 9 ilustra el submit parcial basado en el evento JavaScript "onBlur" que se genera cuando el usuario se desplaza entre los campos del formulario. En el cliente, Ajax nos proporciona un mecanismo apropiado para enlazar los eventos JavaScript con el procesamiento del submit parcial. Los detalles de la API se pueden consultar en la API de referencia de JavaScript, sin embargo el mecanismo descrito sólo se apoya en una pequeña parte de JavaScript que está definida en un determinado atributo JavaScript de la instancia del
componente JSF implicado y causante del submit parcial. La granularidad en la que tiene lugar el submit parcial se encuentra bajo el control del desarrollador totalmente. En ciertos casos, podría ser apropiado evaluar y reaccionar ante la entrada del usuario a partir de pulsaciones de
teclas, y en otros casos, cuando el foco se desplace entre los controles del formulario. En otras ocasiones, sólo determinados controles del formulario deberían iniciar un submit parcial.

Figura 9 Partial Submit Basado en el evento OnBlur

La lógica de la aplicación asociada al partial submit también se encuentra bajo el control total del desarrollador. El mecanismo de validación estándar de JSF puede mejorarse, o puede aplicarse cualquier lógica de evaluación simple o compleja. Si se utilizan las validaciones estándares de JSF, es importante diseñarlas de forma que faciliten los submits parciales. La demo "Address Form", incluida en los ejemplos proporcionados por ICEfaces, ilustra dos mecanismos diferentes que pueden ser desarrollados bajo el partial submit. Se añaden
validaciones estándares a los ampos City, State, y ZIP, para capturar entradas no válidas, sin embargo también se lleva a cabo una evaluación sobre la tupla de campos {City:State:ZIP}. Utilizando los eventos "valueChangedEvents" asociados a los controles de entrada, es posible realizar un análisis entre campos y transformar el formulario basándonos en la entrada actual. Por ejemplo, al introducir una Ciudad válida hará que el control de la entrada Estado cambie a partir del valor introducido añadiendo a al control select-one-of-many asociado sólo los valores de los estados que estén relacionados con el valor previamente introducido en el campo anterior.