我是grails和groovy的新手。我有一个具有开始和结束日期的Project域类。我想提出一个约束,指定结束日期需要大于开始日期(然后项目的另一个子对象需要让其startdate和enddate与父项目的日期一起验证)。这可能是最小约束还是我必须把它放在其他地方?唯一约束允许以这种方式链接两个属性,希望min / max约束允许这样做。 我试过了
startDate(blank:false)
endDate(blank:false, min:'startDate')
它会抛出一个错误,指出属性startDate在Project
上不可用答案 0 :(得分:14)
尝试使用自定义验证器:
static constraints = {
endDate(validator: { val, obj ->
val?.after(obj.startDate)
})
}
val
是字段的值,obj
是对要验证的对象的引用。闭包可以包含您需要的任何逻辑,因此您可以按照您在问题中描述的方式扩展验证(通过访问您使用obj
引用的子对象)。
自定义验证器非常灵活。看看the documentation。理想情况下,您需要返回自定义消息;如何做到这一点也可以在上面链接的文档中找到。