Spring Boot 在Sping Boot 3中自动反序列化LocalDateTime请求参数的正确方法

cnh2zyt3  于 2022-12-18  发布在  Spring
关注(0)|答案(2)|浏览(166)

Sping Boot 3中自动反序列化LocalDateTime请求参数的正确(推荐/记录)方法是什么?
该URL类似于http://localhost:8080/test?from = 20221001000000
我尝试过此解决方案,但不起作用

@RequestMapping("/test")
public String index(@DateTimeFormat(pattern = "YYYYMMddHHmmss") java.time.LocalDateTime from) {
.....
}

我试过这个,它也不起作用。它甚至不进入自定义反序列化器。

@RequestMapping("/test")
public String index(@JsonDeserialize(using = LocalDateTimeDeserializer.class) LocalDateTime from) {
........
}

@Override
public LocalDateTime deserialize(JsonParser jp, DeserializationContext dc) throws IOException, JacksonException {
        ....
    }

我得到的例外是
[org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' from required type 'java.time.LocalDateTime'; Failed to convert from type [java.lang.String] to type [@org.springframework.format.annotation.DateTimeFormat java.time.LocalDateTime] for value '20221001000000']

oug3syen

oug3syen1#

您的模式似乎不正确,请尝试以下操作:

uuuuMMddHHmmss
  • uuuu
  • MM表示月份月份月份
  • dd用于当天
  • HH表示一个小时,采用24小时格式
  • mm分钟
  • ss持续数秒

您的代码可以如下所示

@RequestMapping("/test")
public String index(@DateTimeFormat(pattern = "uuuuMMddHHmmss") LocalDateTime from) {
    ...
}

相关问题