2013-03-01 12 views
83

Bir Bahar Kontrolörü için YYYY-AA-GG biçiminde bir tarih gönderen bir GET isteğini ettik. şöyle kontrolör kod şudur:Spring MVC Controller'a GET talebinde Tarih paramları nasıl kabul edilir?

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

isteği doğru gönderilir Firebug ile kontrol ediyorum olarak.

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

nasıl kontrolör Tarih bu biçimi kabul yapabilirsiniz: hatası alıyorum? Lütfen yardım edin. Neyi yanlış yapıyorum?

cevap

170

Tamam, ben onu çözdüm. durmaksızın kodlama & bayan böyle bir saçma şey tam bir gün sonra yorgun olabilir herkes için bunu yazma.

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

Evet, basittir. Sadece DateTimeFormat ek açıklamasını ekleyin. Bu benim Sen istediğini elde için kullanabilirsiniz ön uç

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

den biçimlendirilmiş tarihi almak için ne yaptığını

+15

bir cevap yazacaktım ama beni yendi. Aynı formatta @DateTimeFormat (iso = ISO.DATE) da kullanabilirsiniz. BTW, eğer Joda DateTime kütüphanesini kullandığınızı önerebilirseniz. Bahar bunu gerçekten destekliyor. – Luciano

+0

Cevap genelde iyi, AMA! İlkbahar'a varsayılan olarak yapılandırmanın bir yolu var mı? Eğer sahip her denetleyicisi DateTimeFormat' @ 'koymak için biraz overkill ... Bahar Boot yılında yanı – thorinkor

+2

@Luciano (iso = ISO.DATE_TIME) Eğer' bahar ayarlayabilirsiniz application.properties' 'in niteliğini format'-.mvc.date veya' org.springframework.format' arabirimini (org.springframework.format.datetime.DateFormatter' muhtemelen gitmek yoludur 'uzanan) uygulamak fasulye ekleyin. Önyükleme İlkbaharında, 'WebMvcConfigurerAdapter' için' addFormatters' yöntemini geçersiz kılabilir ve Formatter uygulayıcı çekirdeklerinizi buraya ekleyebilirsiniz. – kiedysktos

2

.

+2

Anlamadım. DateString, Tarih olarak değil, String olarak aldığınızda @ DateVimeFormat @ @ PathVariable eklenmesinin amacı nedir? –

İlgili konular