2010-10-26 17 views
5

Estoy usando el complemento Grails Webflow. Estos son los objetos de dominio con los que trabajo:¿Cómo falsifico un error de validación?

class Foo implements Serializable { 
    String fooProp1, 
      fooProp2 

    static constraints = { 
     fooProp2 nullable: false 
    } 
} 

class Bar implements Serializable { 
    Foo fooObject 

    static constraints = { 
     fooObject nullable: false 
    } 
} 

en un punto en el WebFlow, necesito para asegurarse de que fooObject.fooProp1 no es nulo. Si es así, quiero arrojar un error y obligar al usuario a proporcionarle un valor. Intenté usar validate() para hacer esto (en los objetos Bar y Foo), pero como fooProp1 tiene la propiedad nullable: true, pasa la validación. ¿Algunas ideas?

+0

Estoy un poco confundido - si este es el caso, ¿la propiedad no debería ser 'nullable: false'? ¿Puedes aclarar por qué no puedes agregar la restricción a tu dominio? Esa es la solución más obvia para mí, supongo. –

+0

Bueno, los objetos Foo pueden existir en la base de datos sin un fooProp1 especificado. Sin embargo, durante el flujo web, esta propiedad no debe ser nula, ya que se utiliza al final del proceso de flujo web. – Pat

Respuesta

10

es probable que pueda hacer esto en el Flujo Web adaptando el siguiente código:

if(fooObject.fooProp1 == null) { 
    fooObject.errors.rejectValue('fooProp1', 'nullable') 
} 

El segundo argumento a ese método, 'nullable', podría ser diferente para su situación. Simplemente deberá configurarlo en el código del mensaje (de message.properties) para mostrar el mensaje de error que desee.

Eche un vistazo a here para más formas de usar reject() y rejectValue().

+0

Gracias, eso es lo que estaba buscando. – Pat

+0

Sí, no hay problema. –

Cuestiones relacionadas