用于日期验证的Grails最小约束

标签 grails grails-domain-class grails-validation

我是grails和groovy的新手。我有一个包含开始和结束日期的Project域类。我想放入一个约束,指定结束日期需要大于开始日期(然后,项目的另一个子对象需要使其开始日期和结束日期与父项目的日期一起生效)。最小约束是否可行?还是必须将其放在其他位置?唯一约束确实允许以这种方式链接两个属性,希望最小/最大约束允许这样做。
我试过了

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

引发错误,表明属性startDate在Project上不可用

最佳答案

尝试使用自定义验证器:

static constraints = {
    endDate(validator: { val, obj ->
        val?.after(obj.startDate)
    })
}
val是该字段的值,而obj是对正在验证的对象的引用。闭包可以包含您需要的任何逻辑,因此您可以按照问题描述的方式扩展验证(通过使用obj访问所引用的子对象)。

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

关于用于日期验证的Grails最小约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4081169/

相关文章:

grails - 向Grails脚手架添加数组成员

grails - 使用Chrome驱动程序时出现 Selenium 异常

grails - 我可以在 Grails 项目之外运行数据库迁移插件脚本吗?

grails - Grails:按属性查找域类

groovy - 域类 insertBefore 的 Grails 单元测试

grails - Grails-从自定义验证程序闭包中调用内置约束

grails - Grails-在域类问题上测试自定义验证器

grails - 如何为 Grails 域类中的两个字段创建和 XOR 验证?

grails - 在Grails中的应用程序启动时添加管理员用户

ajax - Grails和AJAX:使用ModalBox或YUI2对话框可以进行Grails表单验证吗?