在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']
2条答案
按热度按时间oug3syen1#
您的模式似乎不正确,请尝试以下操作:
uuuu
年MM
表示月份月份月份dd
用于当天HH
表示一个小时,采用24小时格式mm
分钟ss
持续数秒您的代码可以如下所示
3hvapo4f2#
DateTimeFormat的年份应为“y”,而不是“Y”。请参阅DateTimeFormat ISO格式文档:
https://docs.spring.io/spring-framework/docs/3.0.x/javadoc-api/org/springframework/format/annotation/DateTimeFormat.ISO.html