Inicio > ADF / Java > ADF tips: Jugando con la validación condicional en un formulario

ADF tips: Jugando con la validación condicional en un formulario

ADF tips

Uno de los requerimientos más típicos en una aplicación es hacer que un formulario cambie sus validaciones en función del valor introducido en uno de sus campos. Hasta la versión 12c no ha sido cuando Oracle nos ha ofrecido la forma de gestionar este tema de una forma sencilla y elegante.

En versiones anteriores la forma más típica de hacer estas comprobaciones extra era implementar un control en el submit del campo o del formulario donde hacer las validaciones y mostrar el mensaje de error en caso de que fuese necesario.

Una de las mejoras interesantes de la versión ADF 12c es el tag af:target. El caso de ejemplo es muy sencillo, dentro de un formulario tenemos un campo de texto y una lista de valores. En función del valor seleccionado en la lista de valores, el campo de texto puede ser obligatorio o no. Aquí un ejemplo del código de formulario:

<af:inputListOfValues id="lovF1" popupTitle="Search and Select: #{bindings.TipsField1.hints.label}" value="#{bindings.TipsField1.inputValue}" label="#{bindings.TipsField1.hints.label}" model="#{bindings.TipsField1.listOfValuesModel}" required="#{bindings.TipsField1.hints.mandatory}" columns="#{bindings.TipsField1.hints.displayWidth}" shortDesc="#{bindings.TipsField1.hints.tooltip}">
        <f:validator binding="#{bindings.TipsField1.validator}"/>
</af:inputListOfValues>

<af:inputText value="#{bindings.TipsField2.inputValue}" label="#{bindings.TipsField2.hints.label}" required="#{bindings.TipsField1.inputValue eq 'AP'}" maximumLength="#{bindings.TipsField2.hints.precision}" id="itF2">
        <f:validator binding="#{bindings.TipsField2.validator}"/>
</af:inputText>

El comportamiento por defecto es que una vez el campo de texto es obligatorio, el usuario no podrá cambiar el valor seleccionado en la lista de valores. Mostrando un error de validación referente al campo obligatorio.

Ahora bien, si añadimos un af:target dentro del componente de la lista de valores podremos evitar este comportamiento. Permitiendo al usuario poder cambiar de valor de la lista de valores sin tener que informar el campo de texto. Utilizando la siguiente instrucción:

<af:inputListOfValues id="lovF1" popupTitle="Search and Select: #{bindings.TipsField1.hints.label}" value="#{bindings.TipsField1.inputValue}" label="#{bindings.TipsField1.hints.label}" model="#{bindings.TipsField1.listOfValuesModel}" required="#{bindings.TipsField1.hints.mandatory}" columns="#{bindings.TipsField1.hints.displayWidth}" shortDesc="#{bindings.TipsField1.hints.tooltip}">
        <f:validator binding="#{bindings.TipsField1.validator}"/>
        <af:target execute="@this" render="itF2"/>
</af:inputListOfValues>

<af:inputText value="#{bindings.TipsField2.inputValue}" label="#{bindings.TipsField2.hints.label}" required="#{bindings.TipsField1.inputValue eq 'AP'}" maximumLength="#{bindings.TipsField2.hints.precision}" id="itF2">
        <f:validator binding="#{bindings.TipsField2.validator}"/>
</af:inputText>

Así de esta forma podremos implementar validaciones condicionales dentro de un formulario sin tener problemas con los campos dependientes. Más abajo os dejo un par de enlaces a la documentación oficial del componente y otro para que podáis probar el comportamiento del tag dentro en la ADF RichClient – Demo.

Documentación tag af:target : http://docs.oracle.com/middleware/1212/adf/ADFUI/af_ppr.htm#BABHDJBC

ADF RichClient – Demo af:targethttp://jdevadf.oracle.com/adf-richclient-demo/faces/components/target.jspx

Categorías:ADF / Java Etiquetas: , ,
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: