我有以下域名实体:
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)(根据文档是默认设置),但没有成功。
任何提示?
答案 0 :(得分:0)
我仍然不知道为什么Grails默认情况下不会将验证级联到嵌套对象,或者至少为什么它在我的示例中不起作用。
但是,我发现以下解决方法对我有用。在父类中,我定义了以下验证器:
class Customer {
static belongsTo = [user:User]
static constraints {
user: nullable: false, validator: {it?.validate()}
}
}
在Customer实例上调用validate()时,也会验证关联的User。