Grails基础:日期,字符串和对象属性

时间:2011-09-27 15:58:41

标签: grails

我刚开始使用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) 

但这也给出了类似的错误。

3 个答案:

答案 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.dateCreatedjava.util.Date。执行:it.dateCreated.format('mm/dd')时,您要格式化日期,但返回java.lang.String。然后,您尝试将String分配给it.dateCreated,但它无法接受,因为它是一个日期。

尝试:println it.dateCreated.format('mm/dd')