这是一个不起作用的简单示例,我想知道是否有一种方法可以在a
的验证程序块内验证b
,如果它没有&#39}。已经过验证。
示例我认为它会起作用:
static constraints =
{
a nullable: false
b validator: { val, obj ->
if(obj.errors.hasFieldError('a'))
{
return false
}
}
}
注意:在这种情况下,即使obj.errors.hasFieldError('a')
为空,a
也会返回false。
答案 0 :(得分:3)
我不认为检查约束的顺序有任何保证,并且它不太可能与constraints
中指定的订单有任何关系块。
但是,除了传递该字段的当前值的常见one-arg自定义验证器和显示您还可以访问域类实例的访问权限的双arg验证器之外,还有三个 - arg变体(遗憾的是它似乎没有在Grails参考文档中介绍......),其中第三个参数是Spring Errors
实例。如果您定义了三个arg验证器,GORM会忽略任何返回值,因为它假定您将直接使用Errors
实例,调用一个或多个不同的{{1}用于任何验证问题的方法。
因此,您可以从rejectValue
块中删除您想要自己运行的任何标准验证,并使用此方法。您可以在the Spring docs中找到有关使用constraints
对象的更多信息。