春のWebアプリケーション設定を使用してPOJOにDeserialiseクエリパラメータは、ジャクソンObjectMapper
この春MVC:ジャクソンobjectMapper
objectMapper.disable(ADJUST_DATES_TO_CONTEXT_TIME_ZONE)
objectMapper.registerModule(new JavaTimeModule())
JavaTimeModule
のように構成された含まれていZonedDateTime
のデシリアライゼーションを処理するために追加されます。 ZonedDateTime
を含むPOJOを処理する2つのエンドポイントがあります。 POJOは、このようなものです:エンドポイントと
class MyRequest {
ZonedDateTime from
ZonedDateTime to
}
とコントローラがある:
私は身体{"from": "2017-03-15T00:00:00Z", "to": "2017-03-16T00:00:00Z"}
応答が200で、デシリアライゼーションが成功するとPOST/POJOを送信
@Slf4j
@RestController
class MyController {
@GetMapping('/pojo')
void getPojo(MyRequest myRequest) {
log.debug("Request received: $myRequest")
}
@PostMapping('/pojo')
void postPojo(@RequestBody MyRequest myRequest) {
log.debug("Request received: $myRequest")
}
}
。私は
が400不正な要求がGET要求であるため、エラーFailed to convert from type [java.lang.String] to type [java.time.ZonedDateTime] for value '2017-03-15T00:00:00Z'
このメイク感覚で受信された
GET /pojo?from=2017-03-15T00:00:00Z&to=2017-03-15T00:00:00Z
、私はJSONので、JSONオブジェクトを送信していないよ送る
反して、マッパーは呼び出されません。
GETリクエストにもobjectMapper
を使用する方法があるため、クエリパラメータはPOJOオブジェクトに変換されますか?
ちなみに、私はそれは以下のようにGETエンドポイントのために直列化復元することができることを知っているが、私はobjectMapper
を注入し、クエリパラメータは、オブジェクト解きにマップ変換GETとPOSTエンドポイント
@DateTimeFormat(iso = ISO.DATE_TIME)
ZonedDateTime from
@DateTimeFormat(iso = ISO.DATE_TIME)
ZonedDateTime to