首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不能在春季使用LocalDateTime RequestParam,我一直收到不好的请求

不能在春季使用LocalDateTime RequestParam,我一直收到不好的请求
EN

Stack Overflow用户
提问于 2022-07-12 11:13:54
回答 1查看 181关注 0票数 0

我有一个具有以下签名的Spring控制器:

代码语言:javascript
运行
复制
@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
}

我试着用下面的GET通过邮递员呼叫它:

代码语言:javascript
运行
复制
http://localhost:8180/gateway/api/v1.0.0/getInfo?page=1&size=1&startTime=2022-07-12

我收到了400个坏请求。我知道问题与startTime参数有关,但我不知道如何更改它.我检查了here,这似乎是正确的..。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-12 11:41:35

在你的请求中

代码语言:javascript
运行
复制
http://localhost:8180/gateway/api/v1.0.0/getInfo?page=1&size=1&startTime=2022-07-12

您正在以表单startTime发送查询参数YYYY-MM-ddendTime,但在控制器端,您试图将其解析为LocalDateTime对象,但应该将其解析为LocalDate对象,因为您是以该形式发送的。LocalDateTime对象有一个表单YYYY-MM-ddTHH:mm:ss.

因此,改变这一点:

代码语言:javascript
运行
复制
@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
}

对此:

代码语言:javascript
运行
复制
   @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
    }

或者这个:

代码语言:javascript
运行
复制
@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对象:

代码语言:javascript
运行
复制
http://localhost:8081/getInfo?startTime=2022-07-12T14:13:12&endTime=2022-07-12T14:13:12
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72951411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档