0
今天我在代码中遇到了一个有趣的问题。 我正在使用Grails 2.2.0。在域对象上设置日历属性
下面是代码
def user = lookupUserClass().get(params.id)
log.info "[update]user.subscriptionExpiryDate1: " + user.subscriptionExpiryDate
user.subscriptionExpiryDate = Calendar.getInstance();
log.info "[update]user.subscriptionExpiryDate2: " + user.subscriptionExpiryDate
if (user.subscriptionExpiryDate instanceof Calendar) {
log.error "***** Is A Calendar Instance ***"
} else if (user.subscriptionExpiryDate instanceof String) {
log.error "***** Is A String Instance ***"
} else {
log.error "***** Is Something else ***"
}
if (!user.save()) {
log.error "[update]Error occured saving user. Errors are: "
user.errors.each { err -> log.error err; }
render view: 'edit', model: buildUserModel(user)
return
} else {
log.info "[update]Successfully saved user"
}
subscriptionExpiryDate
在我User
对象日历属性。
当我执行保存我收到以下错误
未能类型的属性值“java.lang.String中”所需类型“java.util.Calendar中的”财产“subscriptionExpiryDate”转换;嵌套的例外是java.lang.IllegalArgumentException异常:无法解析日期:无法解析的日期:2013年5月3日
任何人都可以请解释为什么我会看到此错误上面的代码如无正站在
那么哪个错误信息被记录下来?如果'Unparsable date:'之后什么也没有,那么日期是空的,因此无法解析/无效 – moeTi 2013-03-05 16:21:10
我建议你使用Calendar的Joda instaead。见[插件](http://grails.org/plugin/joda-time) – 2013-03-05 16:33:31
@moeti道歉,我没有粘贴完整的日期,日期打印出来,是一个有效的日期塞尔吉奥 - 谢谢塞尔吉奥我会保持记住,但我会好奇为什么我的初始代码不是第一个工作 – Damien 2013-03-05 16:39:59