【发布时间】:2021-05-05 13:18:52
【问题描述】:
嗨,我是一个有日期的新手。
这是我的控制器。我想传递我的字符串日期而不是 Instant.now ()。
@PutMapping("/edit")
public void edit (@RequestBody Client client) {
clientService.update (client.getId (), Instant.now ());
}
public interface ClientService {
Subscription update(String clientId, Instant myTime);
}
${#temporals.format(client.myTime, 'yyyy-MM-dd')}
我的实体
@NotNull
@JsonProperty("myTime")
@JsonFormat(pattern="yyyy-MM-dd")
private OffsetDateTime myTime;
public OffsetDateTime getMyTime() {
return myTime;
}
public void setMyTime(OffsetDateTime myTime) {
this.myTime = myTime;
}
当我尝试将 client.getMyTime() 传递给 edit() 时,我有这个:
org.springframework.http.converter.HttpMessageNotReadableException: 无效的 JSON 输入:无法反序列化类型的值
java.time.OffsetDateTime来自字符串“2021-05-05”:未能 反序列化 java.time.OffsetDateTime: (java.time.DateTimeException) 无法从 TemporalAccessor 获取 OffsetDateTime:{},ISO 已解决 到 java.time.format.Parsed 类型的 2021-005-05;嵌套异常是 com.fasterxml.jackson.databind.exc.InvalidFormatException
如何解决?我如何需要将日期从前端传递到我的控制器?
【问题讨论】:
-
您使用的是 Thymeleaf HTML 模板还是 REST JSON API?你用的是
@Controller还是@RestController? -
是的,我使用 Thymeleaf
-
我使用 RestController
-
所以您使用 Thymeleaf 显示 HTML 页面(通过
@Controller),然后使用 JavaScript 向您的 REST API 发出 AJAX 请求(使用@RestController),对吗?