gpt4 book ai didi

validation - Grails验证程序未检测到违规

转载 作者:行者123 更新时间:2023-12-02 15:53:25 28 4
gpt4 key购买 nike

给定一个简单的域类,具有开始时间和结束时间,其中结束时间应始终大于开始时间:

    class Daypart {
...
Integer startHour
Integer endHour

static constraints = {
...

startHour inList: (0..23)
endHour inList: (0..23), validator: { val, obj ->
return (val > obj.startHour)
}
}
}

如果将20用作开始时间,将4用作结束时间,则验证将失败。在调用save()操作的全新实例上,验证将按预期进行。

编辑现有实例并调用update()时,即使将开始时间设置为-32(具有简单约束的属性,甚至没有自定义验证例程),也会忽略验证规则,并且.validate()返回true。确保在更新块中调用.validate()之前,先确保.clearErrors()无济于事。对这里发生的事情有什么想法吗?

编辑:添加更新块
    def update(Daypart dc) {

dc.clearErrors()
dc.validate()
println ("Got errors? ${dc.hasErrors()}")

try {

if (dc.hasErrors()) {
flash.error ="Invalid parameters."
redirect resource: "campaign/daypart", action: "edit", id: dc.id, campaignId: dc.campaign.id
return
}

dc.save(flush: true)
flash.success = "Updated campaign ${dc.campaign.id}."
redirect(controller: 'campaign', action: 'index')

}

catch (DaypartException de) {
flash.message = de.message
redirect resource: "campaign/daypart", action: "edit", id: de.daypart.id, campaignId: de.daypart.campaign.id
}
}

}

最佳答案

删除dc.clearErrors(),这将从Daypart实例中删除所有验证错误。

关于validation - Grails验证程序未检测到违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35709616/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com