【问题标题】:Grails databinding date formatGrails 数据绑定日期格式
【发布时间】:2015-08-25 10:25:42
【问题描述】:

当涉及到数据绑定和正确的日期格式时,我在 grails 2.3 应用程序中遇到了问题。

我使用了一个日期选择器 (jQuery ui),它提供了一个 <input type="hidden" />,它以 ISO_8601 格式保存选定的日期。它将向控制器发布一个像这样的值:2015-08-14。表单本身和发布结果是正确的。

我使用这个简化模型:

class Thing {

    DateTime lastUpdated

    static constraints = {
        lastUpdated nullable: true
    }
}


当我尝试创建实体时,我会遇到以下错误消息:

Invalid format: "2015-08-14" is malformed at "15-08-14"


第一项研究使我发现Config.groovy 发生了这种变化:

jodatime.format.html5 = true

(下面列表中的链接 3)

应用它会导致改变。现在错误信息是:

Invalid format: "2015-08-14" is too short翻转表


另一个尝试是将 databinding.dateFormats 更改为此(也在 Config.groovy 中):

grails.databinding.dateFormats = [ "yyyy-MM-dd HH:mm:ss.S","yyyy-MM-dd'T'hh:mm:ss'Z'", "yyyy-MM-dd"]

什么都没有。


据我了解,给定的日期格式应自动编组到 dateTime 对象中。我错过了什么配置?


以下是相关问题,遗憾的是对我没有帮助:

【问题讨论】:

  • @Ilya 谢谢你的回复。我对 grails 很陌生,并不完全理解这有什么帮助。我应该把这个:jodatime { format.org.joda.time.DateTime = "yyyy-MM-dd" }? - 这似乎是错误的。输入和显示风格之间有联系吗? 更新:这确实有效,但是将 dateTime 格式切换为仅日期格式是否是个好主意?
  • @Ilya 您可以将其发布为答案吗?这似乎可以解决问题。我仍然需要了解这种变化的影响。

标签: grails grails-orm jodatime grails-2.0


【解决方案1】:

你应该在 config.groovy 中添加下一行

jodatime { format.org.joda.time.DateTime = "yyyy-MM-dd" }  

但是如果你不需要花时间在这个领域,这里最好使用LocalDate 而不是DateTime

class Thing {  
   LocalDate lastUpdated;

...

jodatime {   
   format.org.joda.time.DateTime = "yyyy-MM-dd HH:mm:ss" 
   format.org.joda.time.LocalDate = "yyyy-MM-dd" 
}  

因此,您将使用DateTime,在需要日期和时间的情况下使用LocalDate,在日期足够的情况下

【讨论】:

  • 感谢您的宝贵时间。这让我发疯了;)现在一切似乎都按预期进行。
猜你喜欢
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多