给定一个简单的域类,具有开始小时和结束小时,其中结束小时应始终大于开始小时的值:
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()时,验证规则将被忽略,.validate()返回true,即使将开始时间设置为-32 (具有简单约束的属性,甚至不是自定义验证例程)。在update块中调用.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
}
}}
发布于 2016-03-01 06:18:13
删除dc.clearErrors(),这将从Daypart实例中删除所有验证错误。
https://stackoverflow.com/questions/35709616
复制相似问题