当前位置: 首页 > 知识库问答 >
问题:

Spring MVC GET请求与Java8即时请求参数

锺离德运
2023-03-14

我试图写一个Spring MVC GET控制器,它需要Java8即时作为请求参数:

    @GetMapping
    @JsonView(OrderListing.class)
    @Validated
    public WebSeekPaginatedResultsDto<OrderListingDto> findAll(@Valid OrderSearchCommand orderSearchCommand) {
       // Some code
    }

与:

    public class OrderSearchCommand {
        private Instant dateCreatedStart;
        private Instant dateCreatedEnd;
        // Some other fields
    }

我正在从一些React/Javascript代码触发一个GET请求,如下所示:

    http://localhost:8080/mms/front/orders?dateCreatedStart=2017-05-31T22%3A00%3A00.000Z 

Spring似乎不喜欢它,并抛出一个错误。以下是错误消息:

    Failed to convert property value of type 'java.lang.String' to required type 'java.time.Instant' for property 'dateCreatedStart'; 
    nested exception is java.lang.IllegalStateException: 
    Cannot convert value of type 'java.lang.String' to required type 'java.time.Instant' for property 'dateCreatedStart': no matching editors or conversion strategy found

知道我为什么会收到这个吗?

谢谢你

共有3个答案

郑富
2023-03-14

也许这能帮到你?序列化/反序列化java 8 java。使用Jackson JSON mapper时,我看到这个Jackson包含即时类。

魏鸿
2023-03-14

我怀疑@DateTimeFormat不适用于Instant字段。具体来说,Instant在Spring参考文档中不作为其工作的类型之一列出。

查看Spring参考第9.5节,了解有关Spring自定义类型转换的详细信息。创建一个转换器

仲涵亮
2023-03-14

错误消息是不言自明的:没有注册的StringInstant转换器。

Controller收到请求时,所有参数都是Strings。Spring/Jackson具有大多数基本类型的预定义转换器列表:-String

但是没有默认字符串

你需要创建并注册一个。或者,您可以将输入类型更改为Spring可以使用@DateTimeFormat注释处理的类型:如何在对Spring MVC控制器的GET请求中接受日期参数?

 类似资料:
  • 可以在模板中直接使用$Request对象,直接输入它的属性或调用它的大部分方法,但只支持方法的第一个参数; // 调用Request对象的get方法 传入参数为id {$Request.get.id} // 调用Request对象的param方法 传入参数为name {$Request.param.name} // 调用Request对象的param方法 传入参数为post.post_title

  • 可以在模板中直接使用$Request对象,直接输入它的属性或调用它的大部分方法,但只支持方法的第一个参数; // 调用Request对象的get方法 传入参数为id {$Request.get.id} // 调用Request对象的param方法 传入参数为name {$Request.param.name} // 调用Request对象的param方法 传入参数为post.post_title

  • 您好,我尝试使用HttpsConnection从不和谐服务器获取响应,但服务器响应错误403,我不知道为什么,我在上面的JDK 13中尝试了这段代码并且有效,但我需要JDK 8,但在这个版本上由于某种原因它不起作用。 错误: 线程“main”java.io.IOException中的异常:服务器返回HTTP响应代码:403用于URL:https://discord.com/api/v9/users

  • 我已经使用zappa在aws lambda上部署了一个flask应用程序,现在该应用程序在所有endpoint上都运行良好,除了我的主endpoint,当我对其发出post请求时,它返回{“消息”:“endpoint请求超时”} 真的需要一个修复或想法如何克服这个我需要调用分析路线,部署的url是 https://2ixfyfcsik.execute-api.eu-west-2.amazonaws

  • 我已经浪费了10个小时试图弄明白一件简单的事情。 我有一个反应前端和一个Spring Boot后端在端口8080上运行。 我在前端有自己的登录表单。 在一个理想的世界里,我所希望的是让Spring Boot像往常一样进行表单验证,而没有那个丑陋的引导表单。 我设置了一个基本的内存身份验证只是为了练习,但它根本不起作用 我有两个选择: > 在Restendpoint中处理身份验证,然后将安全上下文设

  • HTTP/1.1 408 REQUEST_TIMEOUT内容-长度:0连接:关闭 已关闭 --------------------------------------------------------------------------------------- 它会导致请求超时。如果我使用curl命令,它是成功的。 请求超时的原因是什么?