2016-05-05 14 views
2

I Modell und Feld wie folgt haben:Spring, Parsen Zeichenfolge Local

@Element(name = "TIMESTAMP") 
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) 
private LocalDateTime date; 

Als Antwort erhielt ich:

<TIMESTAMP>2016-05-04T13:13:42.000</TIMESTAMP> 

aber xml beim Parsen Ich habe Fehler zu modellieren:

"message": "org.simpleframework.xml.core.PersistenceException: Constructor not matched for class java.time.LocalDateTime", 

ich habe auch versucht mit:

@Element(name = "TIMESTAMP") 
    @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS") 
    private LocalDateTime date; 

und das funktioniert immer noch nicht. Irgendeine Idee ? Ich verwende springframework.xml lib.

+0

was ver verfügbar Frühling haben Sie? – Enigo

+0

Spring Boot 1.2.5.RELEASE, Feder 4.1.7.RELEASE – user3528733

Antwort

3

Das Problem ist standardmäßig simplexml lib weiß nicht, wie man neue Java8-Datentypen serialisiert/deserialisiert.

Um erfolgreich zu sein, müssen Sie benutzerdefinierte Konverter verwenden.

Beispiel Entität (siehe spezielle @Convert Anmerkung)

public class Entity { 

    @Element(name = "TIMESTAMP") 
    @Convert(LocalDateTimeConverter.class) 
    private LocalDateTime date; 

    // omitted 
} 

Spezialkonverter

public class LocalDateTimeConverter implements Converter<LocalDateTime> { 

public LocalDateTime read(InputNode node) throws Exception { 
    String name = node.getValue(); 
    return LocalDateTime.parse(name, DateTimeFormatter.ISO_LOCAL_DATE_TIME); 
} 

public void write(OutputNode node, LocalDateTime input) { 
    String value = input.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME); 
    node.setValue(value); 
} 
} 

Nutzungs

 Strategy strategy = new AnnotationStrategy(); 
     Persister persister = new Persister(strategy); 
     Entity serializedEntity = persister.read(Entity.class, xmlInputStream); 

Volle Quelle ist auf GitHub

Verwandte Themen