域对象上的grails验证方法
我编写了一个非常简单的测试用例,发现当我对域对象调用validate时,Grails只执行一个浅层验证。我可以在grails中进行深度验证吗?有人能帮我吗域对象上的grails验证方法,grails,validation,Grails,Validation,我编写了一个非常简单的测试用例,发现当我对域对象调用validate时,Grails只执行一个浅层验证。我可以在grails中进行深度验证吗?有人能帮我吗 class Person { Address address } class Address { String city } 当我执行newAddress().validate()时,它返回false,但当我执行newperson(Address:new Address()).validate时,它返回true。虽然当前没有为和方法
class Person {
Address address
}
class Address {
String city
}
当我执行newAddress().validate()
时,它返回false,但当我执行newperson(Address:new Address()).validate时,它返回true。虽然当前没有为和方法记录“深度验证”,但(文档说明文档已丢失,但与完整的1.3.x树相关)。关于这些方法的文档“deepValidate
参数,然后:
@deepValidate@(可选)-确定
是否存在域的关联
实例也应该进行验证,
i、 e.验证是级联还是级联
不是。默认情况下,这是@true@设置
若要禁用级联,请单击“false”
验证
然而,测试表明,在以下任何情况下均不进行“深度验证”:
- 一对一协会
- 一对多协会
- 使用匹配的setter指定的关联对象
- 使用匹配的
方法指定的关联对象,例如addTo*(..)
person.addtoAddresss(..)
- 使用
和validate()
方法,save()
- 而且,使用这两种方法和显式的
参数deepValidate:true
- 而且,使用这两种方法和显式的
class Person {
Address primaryAddress
static hasMany = [secondaryAddresses: Address]
static constraints = {
primaryAddress validator: {
it?.validate()
}
secondaryAddresses validator: {
it?.every { it?.validate() }
}
}
}