【问题标题】:I need to pass date from json to my controller我需要将日期从 json 传递给我的控制器
【发布时间】: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),对吗?

标签: java rest date thymeleaf


【解决方案1】:

尝试使用java.util.Date 对象。

private Date myTime;

格式不是必需的。

【讨论】:

  • 使用 OffsetDateTime 有什么具体原因吗?
  • 我的项目中有很多OffsetDateTime的用法。切换到其他东西会很麻烦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
相关资源
最近更新 更多