(Quick Reference) # 12.6 Applying Validation to Other Classes Version: 6.0.0 ## 12.6 Applying Validation to Other Classes Domain classes and Command Objects support validation by default. Other classes may be made validateable by defining the static `constraints` property in the class (as described above) and then telling the framework about them. It is important that the application register the validateable classes with the framework. Simply defining the `constraints` property is not sufficient. #### The Validateable Trait Classes which define the static `constraints` property and implement the Validateable trait will be validateable. Consider this example: src/main/groovy/com/mycompany/myapp/User.groovy
    package com.mycompany.myapp

    import grails.validation.Validateable

    class User implements Validateable {
        ...

        static constraints = {
            login size: 5..15, blank: false, unique: true
            password size: 5..15, blank: false
            email email: true, blank: false
            age min: 18
        }
    }
##### Programmatic access Accessing the constraints on a validateable object is slightly different. You can access a command object’s constraints programmatically in another context by accessing the `constraintsMap` static property of the class. That property is an instance of `Map<String, ConstrainedProperty>` In the example above, accessing `User.constraintsMap.login.blank` would yield `false`, while `User.constraintsMap.login.unique` would yield `true`. | Quick Reference (hide)