无法获得在Grails 2.0.4上运行的级联验证

时间:2012-11-04 12:04:58

标签: validation grails

我有以下域名实体:

class Customer {

   // Customer properties...

   static belongsTo [user: User]
}

class User {

   // User properties...

}

当我尝试验证包含错误的Customer实例的User实例时,验证成功。在我的单元测试中:

Customer customer = new Customer()
// Set customer properties...

User user = new User()
// Set user properties that contain errors...

customer.user =  user

assertFalse user.validate()     // succeeds
assertFalse customer.validate() // fails!

在运行时应用程序上也观察到相同的行为。我已经在调试模式下运行我的应用程序并验证用户的errors属性为null。

我也尝试在我的客户实例上调用validate(deepValidate:true)(根据文档是默认设置),但没有成功。

任何提示?

1 个答案:

答案 0 :(得分:0)

我仍然不知道为什么Grails默认情况下不会将验证级联到嵌套对象,或者至少为什么它在我的示例中不起作用。

但是,我发现以下解决方法对我有用。在父类中,我定义了以下验证器:

class Customer {

  static belongsTo = [user:User]

  static constraints {
    user: nullable: false, validator: {it?.validate()}
  }
}

在Customer实例上调用validate()时,也会验证关联的User。