Grails域验证器不工作
我的域中有以下字段Grails域验证器不工作,grails,grails-domain-class,Grails,Grails Domain Class,我的域中有以下字段 @BindingFormat('mm/dd/yyyy hh:mm a') Date advertiseDate @BindingFormat('mm/dd/yyyy hh:mm a') Date closeDate @BindingFormat('mm/dd/yyyy hh:mm a') Date letDate closeDate validator: { value, contract -> value >= contract.advertiseDate
@BindingFormat('mm/dd/yyyy hh:mm a')
Date advertiseDate
@BindingFormat('mm/dd/yyyy hh:mm a')
Date closeDate
@BindingFormat('mm/dd/yyyy hh:mm a')
Date letDate
closeDate validator: { value, contract -> value >= contract.advertiseDate }
letDate validator: { value, contract -> value >= contract.closeDate }
我在messages.properties文件中有验证错误
project.Contract.closeDate.validator.error = Close Date cannot be before Advertise Date
project.Contract.letDate.validator.error = Let Date cannot be before Close Date
由于某种原因,我的验证器似乎无法工作。我没有收到任何错误我只是没有收到我的验证错误
这些验证在我使用jquery datepicker时只使用了mm/dd/yyyy格式,但一旦我切换到jquery datetimepicker时使用了mm/dd/yyyy hh:mm格式,它就相当有效了。我唯一做的另一个改变是在普惠制中加入了如下格式
value="${formatDate(format:"MM/dd/yyyy hh:mm a", date:contractInstance?.letDate)}"
如果您有任何帮助或想法,我们将不胜感激。您需要验证程序中的以下逻辑 返回键将用于查找该特定字段的消息
注意上面的消息键的更改,在无效情况下,这些消息键与返回键匹配。我假设project是消息键中的包名,并且日期使用@BindingFormat正确绑定。首先要确认是否调用了它们。这样,您就可以知道是验证器中的逻辑出了问题,还是停止了对验证器表单的调用。我建议将println添加到验证器中,以便在日志中查看是否正在调用它。类似于:println'In closeDate validator';月份应使用大写字母M:@BindingFormat'MM/dd/yyyy hh:MM a'
closeDate validator: { value, contract ->
if ( value < contract.advertiseDate ) return ['invalid']
}
letDate validator: { value, contract ->
if ( value < contract.closeDate ) return ['invalid']
}
//messages.properties
project.contract.closeDate.invalid = Close Date cannot be before Advertise Date
project.contract.letDate.invalid = Let Date cannot be before Close Date