Grails - 仅在更新时验证嵌入对象属性

时间:2014-09-25 17:35:21

标签: grails

我有一个带有嵌入对象的grails域类,我想在更新时验证嵌入对象的属性。

我知道我可以使用自定义验证程序在普通的grails域类上执行此操作,并检查域的类ID是否为null。 我不能这样做是因为嵌入式对象缺少id。

我想做的事情有一个小例子。

//This is on domain/somePackage/A.groovy
class A{
    B embeddedObject

    static embedded = ['embeddedObject']

    static constraints = {
        embeddedObject.attribute validator:{val, obj-> //The app fails to start when this code is added!!
            if(obj.id && !val) //if the id is not null it means the object it's updating...
                return 'some.error.code'
        }
    }

}


//this class is on src/groovy/somePackage/B.groovy
class B{
    String attribute

    static constraints={
        attribute validator:{val,obj->
            if(obj.id && !val) //This will fail too! because the lack of an id on this object....
                return 'some.error.code'
        }
    }
}

有没有办法在嵌入对象上获取'父'的id? 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

太复杂了:

class A{
    B embeddedObject

    static embedded = ['embeddedObject']

    static constraints = {
        embeddedObject validator:{ val, obj ->
            if( obj.id && !val.attribute )
                return 'some.error.code'
        }
    }
}