Я знаю, что это старый вопрос, но я отвечаю, потому что сегодня у меня такая же проблема, и я потерял 4 часа работы, чтобы найти решение. Проблема в том, что Spring использует jackson для сериализации и десериализации JSON. @DateTimeFormat
аннотация не будет выполнять эту работу, вы должны сказать Джексону, как сериализовать дату.У вас есть два решения: первое это проще и использовать @JsonFormat
аннотации в методе геттерной:
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd/MM/yyyy")
public Date getDob(){
return dob;
}
Второе решение заключается в создании пользовательского сериалайзера для полой даты, как это:
public class JsonDateSerializer extends JsonSerializer<Date>{
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
throws IOException, JsonProcessingException {
String formattedDate = dateFormat.format(date);
gen.writeString(formattedDate);
}
}
, а затем использовать аннотацию в методе GET:
@JsonSerialize(using=JsonDateSerializer.class)
public Date getDob(){
return dob;
}
ссылка объясняет, как сделать сериалайзер
https://dzone.com/articles/how-serialize-javautildate
я столкнулся с другой проблемой, я импортировал в моем классе JsonDateSerializer классов из org.codehaus.jackson
пакета, но весна даваемая мне эту ошибку:
java.io.FileNotFoundException: class path resource [org/codehaus/jackson/map/JsonSerializer.class] cannot be opened because it does not exist
Так я изменил весь импорт в пакет
com.fasterxml.jackson
и все это работает нормально. Надеюсь, это может помочь кому-то.
Как вы «печатаете» этот вывод? Я спрашиваю, потому что похоже, что аннотация не учитывается вообще. – Ralph
Я бы использовал API [Joda-time] (http://joda-time.sourceforge.net/) (как всегда, я предпочитаю) и, конечно же, не API-интерфейсы времени по умолчанию Java SE. Если вы используете Spring 3.2, вы можете зарегистрировать собственный редактор свойств напрямую с помощью ['@ ControllerAdvice'] (http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework /web/bind/annotation/ControllerAdvice.html), чтобы удовлетворить все, что вам нужно. – Lion