繁体   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