Applying Validation Constraints in Classes other than Domain classes and Command Objects

1 min read
Share:

We usually specify validation constraints in domain classes and command objects.
But, if it is required to provide validation in other classes(like classes in src/groovy), we can do so in two ways :
1. Defining a static constraints property in the class and using the @validateable annotation.
2. Defining a static constraints propery in the class and making an entry of the class in grails.validateable.classes property in config.groovy.

Here is an example of first way:
[java]
package com.example.dto
import grails.validation.Validateable
@Validateable
class DataDTO {
String site
Integer views

static constraints = {
site blank: false
views blank: false
}
}
[/java]
If a class is not marked with @Validateable, it may still be made validateable by defining the static constraints property in the class (as shown above) and then assigning class name(with package name) to the grails.validateable.classes property in Config.groovy:

[java]
grails.validateable.classes = [com.example.dto.DataDTO]
[/java]

In older versions of grails, one could achieve the same result in a slightly different way as mentioned here.

Hope it helps 🙂

Raj Gupta
raj.gupta@intelligrape.com
@rajdgreat007

comments ( 2 )

  1. Hi Thomas,

    You are correct. Grails will not be able to check for the uniqueness of site property since the class is not bound to any database. I corrected it in my example. Thanks for pointing out.

    Reply
  2. Nice. Thank you for that. 🙂

    I have one question:
    In your specific example in what context is the site-property of an object of the class DataDTO unique? Since the class is not bound to any database table does grails check if the site-property of all instaces is unique?

    Thomas

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *