Validation 我可以有选择地关闭约束吗?

Validation 我可以有选择地关闭约束吗?,validation,grails,Validation,Grails,我有一个从UI更新的域类。强制要求用户填写所有必需的信息,并且一切正常,这是一些限制 然而,我也有一些更新域的quartz作业,它们不一定需要遵守所有这些约束。我想忽略一些特定的,这样save()就可以工作了 我可以考虑以下几种方法: 使用save(validate:false)但这样会忽略所有约束(不是我想要的) 删除仅适用于UI的约束,并手动检查数据在控制器中是否有效 将这些约束包装到验证器中,只有当瞬态属性的值为saveFromUI(在save()之前从控制器设置此瞬态属性)时,验证器才

我有一个从UI更新的域类。强制要求用户填写所有必需的信息,并且一切正常,这是一些限制

然而,我也有一些更新域的quartz作业,它们不一定需要遵守所有这些约束。我想忽略一些特定的,这样
save()
就可以工作了

我可以考虑以下几种方法:

  • 使用
    save(validate:false)
    但这样会忽略所有约束(不是我想要的)
  • 删除仅适用于UI的约束,并手动检查数据在控制器中是否有效
  • 将这些约束包装到验证器中,只有当瞬态属性的值为
    saveFromUI
    (在
    save()之前从控制器设置此瞬态属性)时,验证器才会生效

这些似乎都是黑客。还有其他更好的方法吗?

几乎听起来好像你需要考虑使用一个命令对象。

但是,您始终可以指定更新时要验证的属性。比如说:

myDomainInstance.validate(['prop1', 'prop2'])
...
myDomainInstance.save(validate: false) // since you already have done so manually prior to this.
该文档包含有关的更多信息