Grails 命令对象上的一个约束能否检查另一个约束的结果?

Grails 命令对象上的一个约束能否检查另一个约束的结果?,grails,command-objects,grails-constraints,Grails,Command Objects,Grails Constraints,这是一个不起作用的简单示例,我想知道如果b的validator块中的a尚未验证,是否有方法验证它 我认为它将如何工作的示例: static constraints = { a nullable: false b validator: { val, obj -> if(obj.errors.hasFieldError('a')) { return false } } } 注意:在这个场景中,ob

这是一个不起作用的简单示例,我想知道如果
b
的validator块中的
a
尚未验证,是否有方法验证它

我认为它将如何工作的示例:

static constraints =
{
    a nullable: false
    b validator: { val, obj ->
        if(obj.errors.hasFieldError('a'))
        {
            return false
        }
    }
}

注意:在这个场景中,
obj.errors.hasfielderor('a')
返回false,即使
a
为空。

我不认为检查约束的顺序有任何保证,也不可能与
约束
块中指定的顺序有任何关系

但是,除了向您传递该字段当前值的通用一个arg自定义验证器和您显示的两个arg验证器之外,还有一个三个arg变量(不幸的是,Grails参考文档中似乎没有介绍它…)其中第三个参数是Spring
Errors
实例。如果您定义了一个三参数验证器,GORM将忽略任何返回值,因为它假定您将直接使用
Errors
实例,为任何验证问题自己调用一个或多个不同的
rejectValue
方法


因此,您可以从
约束中删除要自己运行的任何标准验证,并改用此方法。您可以在中找到有关使用
错误
对象的详细信息

听起来是个好主意,我有多个字段要检查,所以我需要将它们都放在约束闭包之外。我对闭包不太熟悉,是否可以在方法中调用约束闭包并向其传递一些字段名以执行操作?