validator validate errors custom grails validation custom-errors

validate - ¿Cómo creo un validador personalizado con un mensaje de error personalizado en Grails?



grails command object custom validator (2)

Paso 1: crea un objeto de dominio o un objeto de comando y pon restricciones personalizadas en él, como tal ...

@grails.validation.Validateable class PeopleCommand { String firstName String lastName String emailAddress String idNumber static constraints = { firstName (blank: false) lastName (blank: false) emailAddress (blank: false) idNumber (blank: false, size: 13..16, validator: {value, object -> if (!value.startsWith(''77'')) return false; }) } }

Esto verificará si el IDNumber ingresado comienza con 77. Si no lo hace, enviará un error. La siguiente pregunta, ¿cómo mostramos el error?

Paso 2: personaliza la vista para mostrar tu error

<div class="${hasErrors(bean:person,field:''idNumber'',''error'')}"> <label class="control-label">Identity Number</label> <input value="${fieldValue(bean:person,field:''idNumber'')}" name="idNumber" type="text"/> <div class="error-messages"> <g:renderErrors bean="${command}" as="list" field="idNumber"/> </div> </div>

En el ejemplo anterior, ${hasErrors(bean:person,field:''idNumber'',''error'')} agregará el error cadena a la clase html si el campo idNumber del objeto del modelo de persona tiene un error. Esta clase se puede usar para aplicar estilo a la entrada y mostrar u ocultar el bloque div.error-messages . El <g:renderErrors bean="${command}" as="list" field="idNumber"/> mostrará un horrible mensaje de error.

Paso 3: crea un mensaje personalizado atractivo

IMPORTANTE : Grails no le permite enviar un mensaje directamente a la vista. En su lugar, debe declarar el mensaje en /i18n/messages.properties (paquetes de mensajes). Puedes usar cualquier tecla que desees.

En messages.properties

validation.idStartsWith77=Your ID number must start with 77

En el validador

idNumber (blank: false, size: 13..16, validator: {value, object -> return ''validation.idStartsWith77'' })

Esto ahora pasa una referencia a la vista, apuntando a su mensaje personalizado en messages.properties ...

Paso 4: piratear el sistema para permitir pasar un mensaje directamente a la vista

Esto solo se aplica a las personas que específicamente no están desarrollando un sitio web en varios idiomas.

Grails le permite pasar parámetros personalizados al analizador. Puede consultar estos parámetros personalizados en su archivo de mensajes. Para engañar al sistema, podemos crear un mensaje personalizado, donde todo el mensaje es un parámetro personalizado. Como tal:

En messages.properties

validation.customRuntimeMessage={3}

En el validador

idNumber (blank: false, size: 13..16, validator: {value, object -> return [''validation.customRuntimeMessage'', ''You need to start your ID with 77''] })

¿Cómo creo un validador personalizado en grillas y hago que pase una cadena personalizada a la vista y un mensaje de error?

Vi a tantas personas atrapadas en el mismo porfavor, decidí crear una pregunta y una respuesta para enfrentarlo.