在运行时修改Grails约束

时间:2013-11-14 08:25:27

标签: grails gorm

问题:

在我的Web应用程序中,我定义了一些约束。当约束属性不匹配时,我可以将域类保存为“草稿”我将约束nullable设置为true。在以下过程中,我可以修改对象,然后完成该过程,我想进行完整验证。这意味着我想添加 nullable:false属性。

  • 问题1:有没有办法在运行时扩展/更改约束?
  • 问题2:当域类具有嵌套约束(例如其他域类引用)时,是否有办法迭代所有约束

由于

1 个答案:

答案 0 :(得分:3)

  • 答案1:是的,你可能可以。
  • 答案2:是的。

所以例子:

    def user = new User()
    for(constraint in user.constraints) {
        constraint.value.setBlank(true)
        constraint.value.setNullable(false)
    }

对于嵌套字段:

    for(constraint in user.someNestedFields.constraints) {
       ....
    }

但我不建议这样做。它看起来像糟糕的架构。 要在未经验证的情况下保存您的域名实体,请致电save(false)