2013-03-01 76 views
83

我有一个GET请求,将YYYY-MM-DD格式的日期发送给Spring控制器。 控制器代码如下:如何在Spring MVC控制器的GET请求中接受Date params?

@RequestMapping(value="/fetch" , method=RequestMethod.GET) 
    public @ResponseBody String fetchResult(@RequestParam("from") Date fromDate) { 
     //Content goes here 
    } 

该请求被正确地发送作为我正在与萤火虫检查。 我得到的错误:

HTTP Status 400: The request sent by the client was syntactically incorrect.

我怎样才能使控制器接受日期的格式? 请帮忙。我究竟做错了什么?

回答

170

好吧,我解决了它。 写作它为任何人在一整天的不间断编码&错过这样一个愚蠢的事情后可能会感到厌倦。

@RequestMapping(value="/fetch" , method=RequestMethod.GET) 
    public @ResponseBody String fetchResult(@RequestParam("from") @DateTimeFormat(pattern="yyyy-MM-dd") Date fromDate) { 
     //Content goes here 
    } 

是的,很简单。只需添加DateTimeFormat注释。

+15

我打算写一个答案,但你打败了我。您也可以使用@DateTimeFormat(iso = ISO.DATE),它是相同的格式。顺便说一句,如果你能我建议你使用Joda DateTime库。 Spring很好地支持它。 – Luciano 2013-03-01 19:06:55

+0

答案一般,但是!有没有办法将其配置为Spring的默认值?把'@ DateTimeFormat'放在你有的每个控制器里有点矫枉过正... – thorinkor 2016-12-09 12:23:51

+2

@Luciano当然你也可以做@DateTimeFormat(iso = ISO.DATE_TIME) – kiedysktos 2017-01-23 11:44:11

2

这是我做的,从前端

@RequestMapping(value = "/{dateString}", method = RequestMethod.GET) 
    @ResponseBody 
    public HttpStatus getSomething(@PathVariable @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) String dateString) { 
    return OK; 
    } 

得到格式化的日期,您可以使用它来得到你想要的。

+2

没有明白。如果您将日期字符串作为字符串接收,而不是日期,那么将@ DateTimeFormat添加到@ PathVariable有什么意义? – 2017-11-27 16:13:15

相关问题