Wiem, że to stare pytanie, ale odpowiadam, ponieważ miałem ten sam problem dzisiaj i straciłem 4 godziny pracy, aby znaleźć rozwiązanie. Problem w tym, że Spring używa jackson do serializowania i deserializacji JSON. @DateTimeFormat
adnotacja nie wykona zadania, musisz powiedzieć Jacksonowi, jak serializować datę.Masz dwa rozwiązania: pierwszym z nich jest prostsze i jest użycie @JsonFormat
adnotacji w metodzie pochłaniacza:
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd/MM/yyyy")
public Date getDob(){
return dob;
}
Drugim rozwiązaniem jest utworzenie niestandardowego serializatora dla pól daty tak:
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);
}
}
a następnie użyć adnotacji w metodzie otrzymujemy:
@JsonSerialize(using=JsonDateSerializer.class)
public Date getDob(){
return dob;
}
ten link wyjaśnia jak to zrobić serializatora
https://dzone.com/articles/how-serialize-javautildate
wychodził inny problem, byłem importowania w mojej klasie JsonDateSerializer klas od org.codehaus.jackson
pakietu, ale wiosna które proponowały mi ten błąd:
java.io.FileNotFoundException: class path resource [org/codehaus/jackson/map/JsonSerializer.class] cannot be opened because it does not exist
więc zmieniłem wszystkie importu do pakietu
com.fasterxml.jackson
i wszystko działa dobrze. Mam nadzieję, że może komuś pomóc.
W jaki sposób "drukujesz" dane wyjściowe? Pytam, ponieważ wygląda na to, że adnotacja w ogóle nie jest brana pod uwagę. – Ralph
Korzystałbym z interfejsu API [Joda-time] (http://joda-time.sourceforge.net/) (jak zawsze jest to moje preferencje) iz pewnością nie jest to interfejs API domyślnej daty domyślnej Java SE. Jeśli używasz Spring 3.2, możesz zarejestrować edytor właściwości niestandardowych bezpośrednio za pomocą ['@ ControllerAdvice'] (http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework /web/bind/annotation/ControllerAdvice.html), aby spełnić wszelkie wymagania. – Lion