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参考文档中似乎没有介绍它…)其中第三个参数是SpringErrors
实例。如果您定义了一个三参数验证器,GORM将忽略任何返回值,因为它假定您将直接使用Errors
实例,为任何验证问题自己调用一个或多个不同的rejectValue
方法
因此,您可以从
约束中删除要自己运行的任何标准验证,并改用此方法。您可以在中找到有关使用错误
对象的详细信息 听起来是个好主意,我有多个字段要检查,所以我需要将它们都放在约束闭包之外。我对闭包不太熟悉,是否可以在方法中调用约束闭包并向其传递一些字段名以执行操作?