【问题标题】:How to pass Date values as params in Grails如何在 Grails 中将日期值作为参数传递
【发布时间】:2011-08-29 00:11:26
【问题描述】:

我看过一些关于在 Grails 中使用 g:datePicker 的帖子。使用它看起来你可以像 params.myDate 这样从参数中选择值。

但是,当我在我看来尝试做这样的事情时:

查看:

<g:link controller="c" action="a" params="[fromDate:(new Date())]">

控制器:

def dateval = params.fromDate as Date

日期解析不正确。我还应该在视图中做些什么来使控制器可以“解析”日期。我环顾四周,并没有在任何不使用 datePicker 的帖子中找到这个。

【问题讨论】:

  • 我现在的计划是只传递日期的 .time 部分,但如果 Grails 有一些我不知道也找不到的魔法,我宁愿使用它。

标签: date grails groovy params


【解决方案1】:

我更喜欢从客户端发送时间而不是日期。

<g:link controller="c" action="a" params="[fromDate:(new Date().time)]">

实际上,我使用了 Date 的构造函数,这需要时间。

def date = params.date

date = date instanceof Date ? date : new Date(date as Long)

我在 DateUtil 类中创建了一个方法来处理这个问题。这对我来说很好。

【讨论】:

    【解决方案2】:

    当参数被发送到控制器时,它们以字符串的形式发送。以下将不起作用

    def dateval = params.fromDate as Date
    

    因为您还没有指定使用什么日期格式将字符串转换为日期。将以上内容替换为:

    def dateval = Date.parse('yyyy/MM/dd', params.fromDate)
    

    显然,如果您的日期不是以yyyy/MM/dd 格式发送的,您需要更改第二个参数。或者,您可以自动进行此转换by registering a custom date editor

    【讨论】:

    • 您的parse(String, String) 参数是否向后设置? Groovy Date Specification
    • @typoknig 你是对的,参数顺序错误 - 我已经纠正了错误
    【解决方案3】:

    从视图发送的都是字符串,所以params.fromDate as Date 不起作用。

    在 grails 2.x 中,向 params 对象添加了一个 date 方法,以允许对日期进行简单、空安全的解析,例如

    def dateval = params.date('fromDate', 'dd-MM-yyyy')
    

    或者您也可以传递日期格式列表,例如

    def dateval = params.date('fromDate', ['yyyy-MM-dd', 'yyyyMMdd', 'yyMMdd'])
    

    或者可以通过键date.myDate.format从messages.properties中读取格式,并使用params的日期方法作为

    def dateval = params.date('fromDate')
    

    【讨论】:

      猜你喜欢
      • 2015-04-04
      • 2018-12-11
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      相关资源
      最近更新 更多