9

我是 grails 和 groovy 的新手。我有一个带有开始和结束日期的项目域类。我想设置一个约束,指定结束日期需要大于开始日期(然后项目的另一个子对象需要使用父项目的日期验证其开始日期和结束日期)。这是否可能与最小约束或我必须把它放在别处?唯一约束确实允许以这种方式链接两个属性,希望最小/最大约束允许这样做。我试过了

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

它抛出一个错误,说属性 startDate 在 Project 上不可用

4

1 回答 1

15

尝试使用自定义验证器:

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

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

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

于 2010-11-02T19:03:33.773 回答