Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将日期放入Grails中的参数中_Grails_Controller_Integration Testing - Fatal编程技术网

如何将日期放入Grails中的参数中

如何将日期放入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:

我正在Grails2.2.3中进行控制器测试,我在域中有一个日期字段。 然而,当您测试控制器时,您应该将所有内容放入params中,显然params必须将所有内容都放入字符串中

如何将日期输入参数

参数示例:

    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”