2013-03-05 55 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

這個問題已經按照安德魯斯的建議解決了