Передача даты как JSON с Spring MVC и Джексоном
У меня есть класс с полем java.util.Date, которое я хочу передать от клиента к контроллеру Spring. Контроллер возвращает HTTP 415 всякий раз, когда я делаю запрос. Я попытался добавить собственный сериализатор, как видно из многих других вопросов, которые мне удалось найти. Пользовательский сериализатор работает, так как мой контроллер, который извлекает ресурсы, извлекает их в пользовательском формате, но контроллер не будет подтверждать JSON. Если я полностью удалю дату, контроллер будет работать, поэтому я знаю, что проблема с этим полем.
В идеале я хочу получить их в длинном представлении по умолчанию, но не могу заставить контроллер принять любой формат.
контроллер
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<String> addEvent(ModelMap model, @RequestBody Event event)
{
eventService.saveEvent(event);
return new ResponseEntity<String>(HttpStatus.CREATED);
}
Класс для сериализации (геттеры и сеттеры опущены, хотя я также попробовал аннотацию там.
public class Event implements Serializable
{
private static final long serialVersionUID = -7231993649826586076L;
private int eventID;
private int eventTypeID;
@JsonSerialize(using = DateSerializer.class)
private Date date;
Serializer
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);
}
И JSON, полученный моим GET-контроллером (точнее, когда я смогу заставить его работать вообще)
{"eventID":1,"eventTypeID":2,"date":"02-01-2014"}