@RequestBody中的日期问题

时间:2016-01-19 10:29:04

标签: java spring rest date

我有一个非常微不足道的问题,它耗费了我很多时间。

我有一个Spring Rest服务,它接受@RequestBody中的模型对象。我在模型对象中传递的是日期,格式为yyyy-MM-dd' HH:mm:ss.SSS' Z'。 问题是当我将日期(即2016-01-05T18:30:00Z)从html传递给其他控制器时,它将被转换为2016-01-04T18:30:00.000Z。

@RequestMapping(method = RequestMethod.POST, path = "/clearance")
 public ResponseEntity<?> saveClearance(@RequestBody ClearanceModel record   ) { 
.....
....
 }

其中ClearanceModel是:

  public class ClearanceModel  {
  private String date;

  public String getDate() {
    return date;
   }

   public void setDate(String date) {
   this.date = date;
  }
}

仅供参考:EST不会发生此问题,但IST会发生此问题。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

Jackson提供了一种为实体指定自定义序列化程序的方法。所以你必须

  • 实现自定义序列化程序(例如,ClearanceModelSerializer扩展JsonSerializer&lt; ClearanceModel&gt;)
  • 使用@JsonSerializer注释您的ClearanceModel(使用= ClearanceModelSerializer.class)

在此处查看更多内容:http://www.baeldung.com/jackson-custom-serialization

答案 1 :(得分:1)

该问题原来是时区问题。将数据类型更改为TIMESTAMP会修复它,而早期它的类型为DATE。