Grails Date被接受为String

Ram*_*han 1 grails grails-orm simpledateformat

在我的grails域中,我有一个字段Date,即java.util.Date.

在我的控制器中,我使用SimpleDateFormate从params加载此日期.

确切地说,params.date类似'20/02/2013 02:30 am'.在控制器中我加载如下:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm a"); domainInstance.date = simpleDateFormat.parse(params.date)

执行此语句时,未检测到错误.但是,当保存域实例时会生成错误

[typeMismatch.Domain.date,typeMismatch.date,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable:codes

[无法将'java.lang.String'类型的属性值转换为属性'date'所需的类型'java.util.Date'; 嵌套异常是java.lang.IllegalArgumentException:无法解析日期:Unparseable date:"20/02/2013 02:30 am"]

你能告诉我哪里出了问题吗?我很确定SimpleDateFormat将String解析为Date.为什么它接受为String.

Ram*_*han 5

感谢您的回复,但我找到了问题的解决方案.问题是这样的.

我将domainInstance实例化为domainInstance = new Domain(params)这是控制器操作中的第一个语句.

执行此语句时,params以"dd/MM/yyyy HH:mm a"格式保存日期.因此,此语句在domainInstance对象中添加了一个错误.

稍后使用SimpleDateFormat后,变量会更新,但错误仍然保留在对象中,因此会出现错误.

在语句'domainInstance = new Domain(params)'调用语句domainInstance.clearErrors()之后,立即解决此错误.

这会清除对象中的所有错误.稍后当保存domainInstance时,将调用validate.如果验证由于某些其他错误而失败,则在那时添加相应的错误.

Rammohan