11

サーバー側でフィルタリングを行うために日付を受け取るエンドポイントを作成しています。コードは次のようになります。

@RequestMapping(
        value = "/test",
        method = RequestMethod.GET,
        produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}
)
@ResponseStatus(HttpStatus.OK)
public TestSummaryModel getTestSummaryByDate(
        @RequestParam ZonedDateTime start,
        @RequestParam ZonedDateTime end) {

    return testService.getTestBetween(start, end);

}

エンドポイントを呼び出そうとすると、HTTP 400 エラー「クライアントから送信された要求は構文的に正しくありません」が表示されます。

さまざまな日付形式を試しましたが、どれも機能しませんでした。何か不足していますか?@DateTimeFormat について読みましたが、追加しても機能しませんでした。

@RequestParam @DateTimeFormat(pattern = "dd-MM-yyyy") ZonedDateTime start

これは私が行っているリクエストの例です:

http://host/test-api/v1/test-summary/test?start=09-09-2015&end=09-09-2015

ありがとう!

4

1 に答える 1

26

@DateTimeFormat必要なものです。Spring MVC 4 には、 に適したコンバーターがありZonedDateTimeます。

ただし、適切なパターンを提供し、適切な値を送信する必要があります。

としてフォーマットされた日付で提供される情報はdd-MM-yyyyZonedDateTime.

試す

@RequestParam("start") @DateTimeFormat(iso = ISO.DATE_TIME) ZonedDateTime start

そして送る

...?start=2014-04-23T04:30:45.123Z

または、ゾーンや時間の情報を必要としない日付型を使用して、適切な日付形式を に提供します@DateTimeFormat

于 2015-09-10T23:03:23.590 に答える