Grails数据绑定日期格式
在Grails2.3应用程序中,当涉及到数据绑定和正确的日期格式时,我遇到了一个问题 我使用一个日期选择器(jqueryui),它提供了一个以ISO_8601格式保存所选日期的Grails数据绑定日期格式,grails,gorm,jodatime,grails-2.0,Grails,Gorm,Jodatime,Grails 2.0,在Grails2.3应用程序中,当涉及到数据绑定和正确的日期格式时,我遇到了一个问题 我使用一个日期选择器(jqueryui),它提供了一个以ISO_8601格式保存所选日期的。它将向控制器发布如下值:2015-08-14。表单本身和post结果是正确的 我使用这个简化模型: class Thing { DateTime lastUpdated static constraints = { lastUpdated nullable: true } }
。它将向控制器发布如下值:2015-08-14
。表单本身和post结果是正确的
我使用这个简化模型:
class Thing {
DateTime lastUpdated
static constraints = {
lastUpdated nullable: true
}
}
当我尝试创建实体时,我将面临以下错误消息:
无效格式:“2015-08-14”在“15-08-14”处格式不正确。
第一项研究让我在
Config.groovy
中看到了这种变化:
jodatime.format.html5=true
(下面列表中的链接3)
应用这一点会带来变化。现在,错误消息是:
格式无效:“2015-08-14”太短
(翻转表)
另一种尝试是将databinding.dateFormats更改为以下格式(同样在Config.groovy中):
grails.databinding.dateFormats=[“yyyy-MM-dd HH:MM:ss.S”,“yyy-MM-dd'T'HH:MM:ss'Z',“yyyy-MM-dd”]
这对任何事情都没有影响
根据我的理解,给定的日期格式应该自动封送到dateTime对象中。我错过了什么配置
这里有一个相关的问题,可惜对我没有帮助:
jodatime { format.org.joda.time.DateTime = "yyyy-MM-dd" }
但是如果您不需要在这个字段中花费时间,最好使用LocalDate
而不是DateTime
class Thing {
LocalDate lastUpdated;
因此,您将在需要日期和时间的地方使用
DateTime
,在日期足够的地方使用LocalDate
。@Ilya谢谢您的回复。我对grails还很陌生,不完全理解这有什么帮助。我应该这样写:jodatime{format.org.joda.time.DateTime=“yyyy-MM-dd”}
?-这似乎是错误的。输入和显示样式之间有联系吗?更新:这确实有效,但将dateTime格式切换为仅日期格式是否是一个好主意?@Ilya您可以将此作为答案发布吗?这似乎解决了问题。我仍然需要理解这一变化的影响。谢谢你抽出时间。这让我发疯;)现在一切似乎都像预期的那样。
jodatime {
format.org.joda.time.DateTime = "yyyy-MM-dd HH:mm:ss"
format.org.joda.time.LocalDate = "yyyy-MM-dd"
}