0

我有以下域实体:

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!

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

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

有小费吗?

4

1 回答 1

0

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

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

class Customer {

  static belongsTo = [user:User]

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

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

于 2012-11-06T07:07:18.867 回答