GRAILS检查是否设置了多个属性中的至少一个

时间:2012-12-23 08:58:15

标签: grails gorm grails-2.0

假设我在Grails 2.x中有类似于Domain Class的东西

class CurrentReading {

    DateTime timestamp
    Sensor sensor
    Integer valueInt
    Boolean valueBool
    Float valueFloat

    static constraints = {
        timestamp blank: false 
        sensor blank: false
    }

}

是否有开箱即用的GORM /验证功能,可以确保设置valueIntvalueFloatvalueBool中的一个属性?

我已经对grails install-plugin constraints进行了一些实验,但未能将其他域属性传递给自定义验证程序。

1 个答案:

答案 0 :(得分:0)

你需要做这样的事情:

static constraints = {
    type inList:['Foo', 'Bar', 'FooBar']
    idStr blank: false, validator: { val, obj ->
        def result
        if(obj.type == "FooBar") {
            result = val =~ /[a-zA-Z]{2}[0-9]{8}/
        } else if(['Foo', 'Bar'].contains(obj.type)) {
            result = val =~ /\d+/
        }
        result.matches()
    }
}