Grails min约束日期验证

时间:2010-11-02 18:58:49

标签: grails grails-domain-class grails-validation

我是grails和groovy的新手。我有一个具有开始和结束日期的Project域类。我想提出一个约束,指定结束日期需要大于开始日期(然后项目的另一个子对象需要让其startdate和enddate与父项目的日期一起验证)。这可能是最小约束还是我必须把它放在其他地方?唯一约束允许以这种方式链接两个属性,希望min / max约束允许这样做。 我试过了

startDate(blank:false)
endDate(blank:false, min:'startDate')

它会抛出一个错误,指出属性startDate在Project

上不可用

1 个答案:

答案 0 :(得分:14)

尝试使用自定义验证器:

static constraints = {
    endDate(validator: { val, obj ->
        val?.after(obj.startDate)
    })
}

val是字段的值,obj是对要验证的对象的引用。闭包可以包含您需要的任何逻辑,因此您可以按照您在问题中描述的方式扩展验证(通过访问您使用obj引用的子对象)。

自定义验证器非常灵活。看看the documentation。理想情况下,您需要返回自定义消息;如何做到这一点也可以在上面链接的文档中找到。