2013-03-05 53 views
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日

任何人都可以请解释为什么我会看到此错误上面的代码如无正站在

+0

那么哪个错误信息被记录下来?如果'Unparsable date:'之后什么也没有,那么日期是空的,因此无法解析/无效 – moeTi 2013-03-05 16:21:10

+0

我建议你使用Calendar的Joda instaead。见[插件](http://grails.org/plugin/joda-time) – 2013-03-05 16:33:31

+0

@moeti道歉,我没有粘贴完整的日期,日期打印出来,是一个有效的日期塞尔吉奥 - 谢谢塞尔吉奥我会保持记住,但我会好奇为什么我的初始代码不是第一个工作 – Damien 2013-03-05 16:39:59

回答

0

这个问题已经按照安德鲁斯的建议解决了