[英]Can't use LocalDateTime RequestParam in Spring, I keep getting bad request
我有一個帶有以下簽名的 Spring 控制器:
@GetMapping(path = "/getInfo", produces = { MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE })
public MultipleOutputSchema<CaricamentoMassivoNOBlob> get(@Nullable @RequestParam String nomeUtente,
@Nullable @RequestParam String stato,
@Nullable @RequestParam("startTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDateTime startTime,
@Nullable @RequestParam("endTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDateTime endTime,
Optional<Integer> page, @Nullable @RequestParam Optional<Integer> size,
@Nullable @RequestParam String orderBy) {
//METHOD BODY
}
我嘗試通過 Postman 使用以下 GET 調用它:
http://localhost:8180/gateway/api/v1.0.0/getInfo?page=1&size=1&startTime=2022-07-12
我收到 400 錯誤請求。 我知道問題與 startTime 參數有關,但我不明白如何更改它......我在這里檢查過,它似乎是正確的......
提前致謝
在您的要求中
http://localhost:8180/gateway/api/v1.0.0/getInfo?page=1&size=1&startTime=2022-07-12
您正在以YYYY-MM-dd
的形式發送查詢參數startTime
和endTime
,但在控制器端,您試圖解析為 LocalDateTime 對象,但它應該被解析為 LocalDate 對象,因為您是以這種形式發送的。 LocalDateTime 對象的格式YYYY-MM-ddTHH:mm:ss.
所以改變這個:
@GetMapping(path = "/getInfo", produces = { MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE })
public MultipleOutputSchema<CaricamentoMassivoNOBlob> get(@Nullable @RequestParam String nomeUtente,
@Nullable @RequestParam String stato,
@Nullable @RequestParam("startTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDateTime startTime,
@Nullable @RequestParam("endTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDateTime endTime,
Optional<Integer> page, @Nullable @RequestParam Optional<Integer> size,
@Nullable @RequestParam String orderBy) {
//METHOD BODY
}
對此:
@GetMapping(path = "/getInfo", produces = { MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE })
public MultipleOutputSchema<CaricamentoMassivoNOBlob> get(@Nullable @RequestParam String nomeUtente,
@Nullable @RequestParam String stato,
@Nullable @RequestParam("startTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startTime,
@Nullable @RequestParam("endTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endTime,
Optional<Integer> page, @Nullable @RequestParam Optional<Integer> size,
@Nullable @RequestParam String orderBy) {
//METHOD BODY
}
或這個 :
@GetMapping(path = "/getInfo", produces = {MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE})
public void get(
@RequestParam("startTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime startTime,
@RequestParam("endTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime endTime
) {
//METHOD BODY
System.out.println(startTime);
System.out.println(endTime);
}
如果您真的想將查詢參數解析為 localDateTime 對象:
http://localhost:8081/getInfo?startTime=2022-07-12T14:13:12&endTime=2022-07-12T14:13:12
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.