用Spring MVC和Jackson传递JSON的日期

我有一个java.util.Date字段的类,我希望从客户端传递给Spring控制器。 每当我发出请求时,控制器都返回HTTP 415。 我已经尝试添加自定义序列化程序,正如我能够找到的许多其他问题中所见。 自定义序列化程序的工作原理是,我的控制器检索资源以自定义格式检索它们,但控制器不会确认JSON。 如果我完全删除日期,控制器工作,所以我知道问题是在该字段。

理想情况下,我希望以默认的长表示forms接收它们,但我无法让控制器接受任何一种格式。

调节器

@RequestMapping(method = RequestMethod.POST) @ResponseBody public ResponseEntity addEvent(ModelMap model, @RequestBody Event event) { eventService.saveEvent(event); return new ResponseEntity(HttpStatus.CREATED); } 

要序列化的类(省略了getter和setter,尽管我也在那里尝试了注释。

 public class Event implements Serializable { private static final long serialVersionUID = -7231993649826586076L; private int eventID; private int eventTypeID; @JsonSerialize(using = DateSerializer.class) private Date date; 

串行

 private static final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy"); @Override public void serialize(Date date, JsonGenerator gen, SerializerProvider provider) throws IOException, JsonProcessingException { String formattedDate = dateFormat.format(date); gen.writeString(formattedDate); } 

我的GET控制器检索到的JSON(当我能让它工作时我会更精确)

 {"eventID":1,"eventTypeID":2,"date":"02-01-2014"} 

你有一个序列化器,但没有解串器,所以它只能单向工作……

你还需要:

  @JsonDeserialize(using = DateDeserializer.class) 

(使用相同日期格式的DateDeserializer)。

为什么两者都没有单一界面对我来说是个谜:-)

而不是字符串,只需从jsp传递日期对象,如下所示。

 var date = new Date(); var formData = {'date':date}; 

并在dto中,生成java.util.Date类型的变量。