Introducción
El plugin ValidationField nos permite renderizar elementos de formularios html, con la ventaja de que estos son "inteligentes" y cuando detectan errores de validación, estos son mostrados automáticamente a través de un mensaje y cambiando su estilo CSS.
Cuando el usuario envía el formulario, si hay errores de validación de dominio, los elementos del formulario cambiarán su borde a rojo y el mensaje configurado será mostrado bajo este (en rojo, también).
El mensaje de error puede ser mostrado o no, tan solo ajustando la propiedad "showMessage" a "true" o "false".
Cuando el usuario envía el formulario, si hay errores de validación de dominio, los elementos del formulario cambiarán su borde a rojo y el mensaje configurado será mostrado bajo este (en rojo, también).
El mensaje de error puede ser mostrado o no, tan solo ajustando la propiedad "showMessage" a "true" o "false".
El color de los mensajes y de los elementos del formulario pueden ser modificados a través de CSS, al igual que el mensaje de error.
Instalación
En la línea de comando, en tu aplicación grails escribe:
grails install-plugin validation-field
También puedes descargar el plugin y escribir:
grails install-plugin [folder_de_descarga]/validation-field-0.2.zip
grails install-plugin [folder_de_descarga]/validation-field-0.2.zip
Eso es todo
Utilizando el plugin Validation Field
En tu archivo/plantilla gsp, dentro de las etiquetas <head> pon esta línea, para importar la hoja de estilos CSS
<g:validationFieldIncludes />
Ahora puedes usar las etiquetas <g:validationField />y <g:validationSelect /> en vez de <input .../> y <select>.
Uso para mostrar elementos input y textArea <g:validationField ... />
Solamente se requieren 3 propiedades para la etiqueta <g:validationField />:
tag: Tipo de etiqueta html ( input o textarea ).
domain: El objeto a ser evaluado (algo así como ${myObject}).
field: El nombre del campo o propiedad del objeto.
ejemplos:
<g:validationField tag="textarea" domain="${person}" field="name" />
Esta línea mostrará un elemento textArea en la página, cuando el usuario envíe el formulario (Si el campo nombre ha quedado vacío y este fué ajustado como obligatorio en la clase de dominio) se mostrará el mismo elemento textArea, pero su estilo CSS será reemplazado automáticamente por uno más visible, y será mostrado el mensaje de error respectivo.
<g:validationField tag="input" type="text" domain="${person}" field="name" />
Igual que el anterior, pero e vez de un textArea, será mostrado un input text.
Puedes usar todas las propiedades html ( style, width, height, class, etc ) con la etiqueta <g:validationField> (funciona igual para elementos "input" de tipo "password")
Uso para mostrar elementos select <g:validationSelect ... />
Para usar etiquetas <g:validationSelect .../> las propiedades son exactamente las mismas que usando la etiqueta de Grails <g:select> además de las propiedades requeridas por el plugin: "domain" y "field".
ejemplo:
<g:validationSelect domain="${person}" field="country" from="${Country.list()}" value="${person.country.id}" optionKey="id" optionValue="name" />
Las propiedades 'domain' y 'field' son propias del plugin ValidationField, el resto pertenecen a la etiqueta de Grails <g:select />.
Nota: Documentación acerca de la etiqueta <g:select> en: http://grails.org/doc/latest/ref/Tags/select.html
Otras propiedades (para ambas etiquetas, validationField y validationSelect):
value:Valor por omisión a ser mostrado.
messageErrorClass: Nombre de la clase CSS para reemplazar el estilo CSS del mensaje de error/validación.
fieldErrorClass: Nombre de la clase CSS, para reemplazar la clase del input/textArea/select cuando hay un error de validación.
customErrorMessage: Si no quieres mostrar el mensaje i18n, puedes cambiarlo aquí.
showMessage: String "true" o "false"para indicar si deseas mostrar el mensaje de error u omitirlo (y solo mostrar el cambio de estilo del campo).