Grails 域有许多验证

Grails domain hasMany validation

我有一个案例,验证是在域属性上完成的,而不是在关联的 (hasMany) 属性上完成的。

是否可以添加任何配置以启用对两个属性(domain 和 hasMany)的验证。

grails 版本:3.1.14

Example:

class Person {
      String name;
      static hasMany = [location: Location]
      static constraints = {
        name nullable: true
      }
}

class Location {
      String address
      String city
      State state
      String zip

      static constraints = {
        address nullable: true
      }
}

根据文档,如您所愿,验证应该适用于具有多个关联:http://docs.grails.org/3.1.14/ref/Domain%20Classes/validate.html

但在我的测试中它不起作用。

另一个解决方案是使用约束:

static constraints = {
    name nullable: true
    location validator: {val, obj ->
        val.every { it.validate() } ?: 'invalid' 
    }
}