簡體   English   中英

不能在 Spring 中使用 LocalDateTime RequestParam,我不斷收到錯誤的請求

[英]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的形式發送查詢參數startTimeendTime ,但在控制器端,您試圖解析為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM