我有一个域类,它需要在它的一个字段中创建它的那一天之后有一个日期。
class myClass {
Date startDate
String iAmGonnaChangeThisInSeveralDays
static constraints = {
iAmGonnaChangeThisInSeveralDays(nullable:true)
startDate(validator:{
def now = new Date()
def roundedDay = DateUtils.round(now, Calendar.DATE)
def checkAgainst
if(roundedDay>now){
Calendar cal = Calendar.getInstance();
cal.setTime(roundedDay);
cal.add(Calendar.DAY_OF_YEAR, -1); // <--
checkAgainst = cal.getTime();
}
else checkAgainst = roundedDay
return (it >= checkAgainst)
})
}
}
所以几天后,当我只更改字符串并调用 save 时,保存失败,因为验证器正在重新检查日期,现在它已经过去了。我可以将验证器设置为仅在创建时触发,还是可以通过某种方式更改它以检测我们是否正在创建或编辑/更新?
@Rob H我不完全确定如何使用您的答案。我有以下代码导致此错误:
myInstance.iAmGonnaChangeThisInSeveralDays = "nachos"
myInstance.save()
if(myInstance.hasErrors()){
println "This keeps happening because of the stupid date problem"
}