2013-03-01 19 views
83

Tôi đã yêu cầu GET gửi ngày ở định dạng YYYY-MM-DD tới Bộ điều khiển lò xo. Mã điều khiển như sau:Làm thế nào để chấp nhận các tham số ngày trong một yêu cầu GET đến bộ điều khiển Spring MVC?

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

Yêu cầu được gửi chính xác khi tôi đang kiểm tra bằng Firebug. tôi nhận được lỗi:

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

Làm thế nào tôi có thể làm cho bộ điều khiển chấp nhận định dạng này của ngày? Xin vui lòng giúp đỡ. Tôi đang làm gì sai?

Trả lời

170

Ok, tôi đã giải quyết. Viết nó cho bất cứ ai có thể mệt mỏi sau một ngày không ngừng mã hóa & bỏ lỡ một điều ngớ ngẩn như vậy.

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

Vâng, thật đơn giản. Chỉ cần thêm chú thích DateTimeFormat.

+15

Tôi định viết câu trả lời nhưng bạn đánh tôi. Bạn cũng có thể sử dụng @DateTimeFormat (iso = ISO.DATE), có cùng định dạng. BTW, nếu bạn có thể đề nghị bạn sử dụng thư viện Joda DateTime. Spring hỗ trợ nó rất tốt. – Luciano

+0

Câu trả lời thường ok, NHƯNG! Có cách nào để cấu hình nó như là một mặc định cho mùa xuân? Đó là một chút quá mức cần thiết để đặt '@ DateTimeFormat' trong mọi bộ điều khiển mà bạn có ... – thorinkor

+2

@Luciano tất nhiên bạn có thể làm @DateTimeFormat (iso = ISO.DATE_TIME) cũng như – kiedysktos

2

Đây là những gì tôi đã làm để có được ngày định dạng từ kết thúc trước

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

Bạn có thể sử dụng nó để có được những gì bạn muốn.

+2

Bạn chưa hiểu. Điểm của việc thêm @ DateTimeFormat vào @ PathVariable là gì nếu bạn nhận được dateString như String, không phải là Date? –

Các vấn đề liên quan