2013-03-01 24 views
83

YYYY-MM-DD形式の日付をSpring Controllerに送信するGETリクエストがあります。次のように コントローラのコードは次のとおりです。私はFirebugのにチェックをしていてSpring MVCコントローラへのGETリクエストで日付パラメータを受け入れる方法は?

@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

[OK]を解決しました。 ノンストップコーディングの一日の後に疲れているかもしれない人のためにそれを書く&そのような愚かなことを逃す。

@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

+0

答えは大体OKですが、!それをSpringのデフォルトとして設定する方法はありますか?あなたが持っているすべてのコントローラに '@ DateTimeFormat'を入れるのはちょっと残念です。 – thorinkor

+2

@Lucianoもちろん@DateTimeFormat(iso = ISO.DATE_TIME)もできます – kiedysktos

2

これは、私はあなたが欲しいものを得るためにそれを使用することができ、フロントエンドから

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

をフォーマットされた日付を取得するために何をしたかです。

+2

それを入手できませんでした。 DateStringではなくDateStringをStringとして受け取った場合、@ PathVariableに@ DateTimeFormatを追加する点は何ですか? –