Mik*_*key 7 mysql grails calendar grails-validation
我有一个域类,需要在其一个字段中创建日期之后有一个日期.
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)
})
}
}
Run Code Online (Sandbox Code Playgroud)
所以几天后,当我只更改字符串并调用save时,保存失败,因为验证器正在重新检查日期,现在它已经过去了.我是否可以将验证器设置为仅在创建时触发,或者是否可以通过某种方式更改它以检测我们是否正在创建或编辑/更新?
@Rob H我不完全确定如何使用你的答案.我有以下代码导致此错误:
myInstance.iAmGonnaChangeThisInSeveralDays = "nachos"
myInstance.save()
if(myInstance.hasErrors()){
println "This keeps happening because of the stupid date problem"
}
Run Code Online (Sandbox Code Playgroud)
Bur*_*ith 13
您可以检查是否将id其设置为是否为新的非持久性实例或现有持久性实例的指示符:
startDate(validator:{ date, obj ->
if (obj.id) {
// don't check existing instances
return
}
def now = new Date()
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1298 次 |
| 最近记录: |