Spring - LocalDate dátumkezelés

Tünet

Kérések feldolgozásakor a String-et nem lehet parsolni. Lsd:

Failed to convert property value of type 'java.lang.String' to required type 'java.time.LocalDate' for property..

Megoldás

Először is szükség van pár dependency-re, pl. a LocalDate kezeléshez: Minimal JSON serialization setupMinimal JSON serialization setup

Bővebben: https://github.com/FasterXML/jackson-module-kotlin


Ha egyedi dátumokat / adattípusokat szeretnénk serializálni / deserializálni, vagy nincs behúzva a projektbe a Spring Web, vagy def...
.

A POST kéréseknél megoldható a probléma, ha a request-ben az adott paramétert annotáljuk a következővel:

@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy.MM.dd hh:mm:ss")

Megj.: Néhány esetben (pl. XML modeleknél) magát a field-et kell annotálni, ilyenkor @field:JsonFormat … annotációt kell használni.

DE!

GET kéréseknél nem működik ez a módszer. Egy pár property-vel globálisan megoldható a kezelésük:

spring:
  mvc.format:
    date: yyyy-MM-dd
    date-time: yyyy-MM-dd HH:mm:ss
    time: HH:mm:ss

A response-okra sajnos még kell annotáció, ha egyedi formátumot akarunk.

Van több esetleges megoldás is, azokat még nem ellenőriztem mindet: https://www.baeldung.com/spring-date-parameters