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