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

时间:2014-03-26 22:50:11

标签: validation grails

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

但是,我也有一些更新域的石英作业,他们不一定需要遵守所有这些约束。我想忽略具体的那些,以便save()起作用。

有几种方法我可以想到这样做:

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

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

1 个答案:

答案 0 :(得分:2)

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

但是,您始终可以指定在更新时要验证的属性。所以像这样:

myDomainInstance.validate(['prop1', 'prop2'])
...
myDomainInstance.save(validate: false) // since you already have done so manually prior to this.

该文档包含有关validation的更多信息。