如何将日期放入Grails中的参数中
我正在Grails2.2.3中进行控制器测试,我在域中有一个日期字段。 然而,当您测试控制器时,您应该将所有内容放入params中,显然params必须将所有内容都放入字符串中 如何将日期输入参数 参数示例:如何将日期放入Grails中的参数中,grails,controller,integration-testing,Grails,Controller,Integration Testing,我正在Grails2.2.3中进行控制器测试,我在域中有一个日期字段。 然而,当您测试控制器时,您应该将所有内容放入params中,显然params必须将所有内容都放入字符串中 如何将日期输入参数 参数示例: params["issueNumber"] = 1 params["dateOfIssue"] = "2014-05-16 09:17:38 EDT" params["placements"] = [location:"Sample location", page:
params["issueNumber"] = 1
params["dateOfIssue"] = "2014-05-16 09:17:38 EDT"
params["placements"] = [location:"Sample location", page:1, column:1, row:1]
params["newsPaper"] = [name:"Sample Ad Name"]
对于“放置”和“报纸”,它们是其他域的参数表示。
上面的示例在controller.save()上失败,并且没有输出很多有用的信息
谢谢。这取决于params绑定到命令对象或域类的方式(如果绑定的话)。考虑到域类直接绑定在控制器操作中,该操作有一个名为dateOfIssue
的字段,下面是必须使用的默认日期格式
yyyy-MM-dd HH:mm:ss.S
现在,如果您正在使用Grails 2.3.*的话,还可以通过添加Grails.databinding.dateFormats
作为日期格式的配置设置,对其进行全局定制:
grails.databinding.dateFormats = [
'MMddyyyy', 'yyyy-MM-dd HH:mm:ss.S', "yyyy-MM-dd'T'hh:mm:ss'Z'"
]
有关详细信息,请参阅文档
对于Grails2.2.3,请参阅以绑定自定义日期格式。希望有帮助
另外,将所有数据绑定内容放在一边,如果根本没有使用,那么显然,下面的转换可以使用应用程序标准化的格式从字符串中获取日期:
Date.parse("yyyy-MM-dd HH:mm:ss Z", "2014-05-16 09:17:38 EDT")
我发现了另一种通过参数传递日期的方法,它可能不像提供的那样漂亮,但不需要任何修改。例如:
params["dateOfIssue"] = "Fri May 16 00:00:00 EDT 2014"
params["dateOfIssue_year"] = "2014"
params["dateOfIssue_month"] = "5"
params["dateOfIssue_day"] = "16"
原始字段名为“dateOfIssue”。您可以创建一个StringToDateValueConverter来完成此操作
(它还支持区域设置)我接受您的解决方案,但我还发现了另一个解决方案,我认为缺少一个params[“dateOfIssue”]=“struct”