【问题标题】:Grails basics:dates, strings, and object propertiesGrails 基础:日期、字符串和对象属性
【发布时间】:2011-09-27 15:58:40
【问题描述】:

我刚从 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) 

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

【问题讨论】:

    标签: grails


    【解决方案1】:

    首先,您应该永远不要更改这样的域实例属性,只是为了“显示”目的。原因是当休眠会话刷新时,域实例实际上会随着您的更改而持久化。

    其次,让视图以正确的格式显示属性。这是视图的责任,而不是域实例或控制器的责任。

    【讨论】:

    • 那么在视图中我将如何操作这个字符串 ${project.dateCreated}? Javascript?
    • 取决于您如何显示它。您不应该仅仅格式化输出来操纵它。例如,如果您正在迭代项目列表(并且当前项目的变量称为项目),则可以只执行 ${project.dateCreated.format('mm/dd')} 。您可能想研究 Grails 文档,了解使用标签格式化事物的各种方法。
    【解决方案2】:

    Date.format(...) 返回一个字符串 (see the documentation)。您不能将 java.lang.String 分配给 java.util.Date

    println it.dateCreated.format('mm/dd') 或使用Grails' formatDate tag 在您的视图中呈现此内容。

    【讨论】:

      【解决方案3】:

      it.dateCreatedjava.util.Date。当您这样做时:it.dateCreated.format('mm/dd') 您正在格式化日期但返回 java.lang.String。然后您尝试将String 分配给您的it.dateCreated,但它不能接受它,因为它是一个日期。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多