2013-03-01 4 views
83

Ich habe eine GET-Anfrage, die ein Datum im YYYY-MM-DD Format an einen Spring Controller sendet. Der Controller-Code lautet wie folgt:Wie akzeptiere ich Date-Parameter in einer GET-Anfrage an Spring MVC Controller?

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

Die Anforderung korrekt gesendet wird, wie ich mit Firebug bin zu überprüfen. ich den Fehler:

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

Wie kann ich die Steuerung übernimmt dieses Format von Datum zu machen? Bitte helfen. Was mache ich falsch?

Antwort

170

Ok, ich habe es gelöst. Schreiben Sie es für jeden, der nach einem ganzen Tag der Non-Stop-Codierung müde sein könnte & verpassen so eine dumme Sache.

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

Ja, es ist einfach. Fügen Sie einfach die DateTimeFormat Annotation hinzu.

+15

Ich wollte eine Antwort schreiben, aber du hast mich geschlagen. Sie können auch @DateTimeFormat (iso = ISO.DATE) verwenden, das dasselbe Format hat. BTW, wenn Sie können ich vorschlagen, dass Sie die Joda DateTime-Bibliothek verwenden. Der Frühling unterstützt es sehr gut. – Luciano

+0

Die Antwort ist generell ok, ABER! Gibt es eine Möglichkeit, es als Standard für Spring zu konfigurieren? Es ist ein wenig Overkill, '@ DateTimeFormat' in jedem Controller zu setzen, den Sie haben ... – thorinkor

+2

@Luciano natürlich können Sie @DateTimeFormat (iso = ISO.DATE_TIME) sowie – kiedysktos

2

Das ist, was ich tat von Front-End formatiert Datum erhalten

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

Sie es verwenden können, was Sie wollen.

+2

Habe es nicht verstanden. Was ist der Sinn des Hinzufügens von @ DateTimeFormat zu @ PathVariable, wenn Sie dateString als String, nicht als Date erhalten? –

Verwandte Themen