grails域约束的多个条件检查?

时间:2014-08-26 18:25:10

标签: grails

对于

等域名
class Question {

    String questionText
    Type questionType

    static hasMany = [choices: Option]          
}

我想知道这种类型的条件约束是否可行。我希望约束是这样的:如果questionType是(无线电,复选框,下拉列表)和(&&)choices.size() == 0,则违反约束并抛出错误。我知道条件的第二部分,即检查收集的大小可以用大小参数来完成,但我想知道我们是否可以具有如上所述的复杂条件,即用&&amp ;;运营商。

1 个答案:

答案 0 :(得分:2)

所以你需要自定义验证器。像下面这样的东西应该做的工作。看看Grails documentation - 非常方便。

static constraints = {
    questionType validator: { val, obj -> 
        !(val in [Type.Radio, Type.Checkbox, Type.Dropdown] && obj.choices.isEmpty()) 
    }
}

但是,您将收到grails生成的错误消息。提供更可读的验证错误是件好事。您可以返回自定义消息代码并在messages.properties中定义:

static constraints = {
    questionType validator: { val, obj -> 
        if (val in [Type.Radio, Type.Checkbox, Type.Dropdown] && obj.choices.isEmpty())         
            return 'emptyChoicesErrorMessage'
    }
}