我刚开始使用Grails,从Javascript转换
在控制器中,我试图在下面执行此操作,但是我收到错误
def list = {
def projects = Project.list()
projects.each {
it.dateCreated = it.dateCreated.format('mm/dd')
println it.dateCreated
}
return [projectInstanceList: projects,
projectInstanceTotal: projects.size()]
}
在我的视图中,我然后显示项目的dateCreated,我只想格式化日期,使其更清晰/更简洁。
这是我的错误:
'java.lang.String' to class 'java.util.Date'
我也尝试将其分配给it.dateCreated
new Date(2011, 09, 31, 10, 57, 00)
但这也给出了类似的错误。
答案 0 :(得分:2)
首先,你应该永远不会改变这样的域实例属性只是为了“显示”目的。原因是当hibernate会话刷新时,域实例实际上会随着你的更改而持久存在。
其次,让视图以正确的格式显示属性。这是视图的责任,而不是域实例或控制器。
答案 1 :(得分:1)
Date.format(...)
返回一个字符串(see the documentation)。您不能将java.lang.String分配给java.util.Date
使用println it.dateCreated.format('mm/dd')
或使用Grails' formatDate tag在您的视图中呈现此内容。
答案 2 :(得分:0)
it.dateCreated
是java.util.Date
。执行:it.dateCreated.format('mm/dd')
时,您要格式化日期,但返回java.lang.String
。然后,您尝试将String
分配给it.dateCreated
,但它无法接受,因为它是一个日期。
尝试:println it.dateCreated.format('mm/dd')