Grails 正在设置域对象的日历属性

Grails 正在设置域对象的日历属性,grails,grails-2.2,Grails,Grails 2.2,我今天在代码中遇到了一个有趣的问题。 我正在使用Grails2.2.0 这是密码 def user = lookupUserClass().get(params.id) log.info "[update]user.subscriptionExpiryDate1: " + user.subscriptionExpiryDate user.subscriptionExpiryDate = Calendar.getInstance(); log.info "[update]user.subscrip

我今天在代码中遇到了一个有趣的问题。 我正在使用Grails2.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”的属性值转换为属性“subscriptionExpiryDate”所需的类型“java.util.Calendar”;嵌套异常为java.lang.IllegalArgumentException:无法分析日期:不可解析日期:2013年3月5日


有人能解释一下为什么我会在上面的代码中看到这个错误,因为没有什么突出的问题

这个问题已经按照Andrews的建议解决了

,那么上面记录了哪个错误消息?如果不可解析日期之后没有任何内容:该日期为空,因此不可解析/无效,我建议您使用Joda Instaread of Calendar。请参阅@moeti抱歉,我没有粘贴完整日期,日期已打印出来,并且是有效日期Sergio-谢谢Sergio,我会记住这一点,但我很好奇为什么我的初始代码无法首先运行您的代码片段在单独运行时似乎运行良好。在粘贴代码之前,您是否在
用户
对象上进行任何数据绑定?如果要绑定到
subscriptionExpiryDate
属性,则需要
PropertyEditor
来执行
字符串
->
日历
转换Hi-Andrew,是的,在该点之前正在进行一些绑定。谢谢你提到房地产编辑,我会看一看