2016-05-18 19 views
2

Ich verwende Grails 2.4 und Jersey Request Builder Plug-in.Grails LazyMap zu POJO Konvertierung fehlgeschlagen wegen Datumswert

ich unten Störung erhalte auf

def resRequestList = RESPONSE FROM REST REQUEST 
ResourceTest item1 = resRequestList.get(0) 

Fehler ist

Cannot cast object '{createdBy=2576, endDate=10-Jun-2016, id=14}' 
with class 'groovy.json.internal.LazyMap' to class 'com.modal.resource.ResourceTest' 

due to: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '10-Jun-2016' with class 'java.lang.String' to class 'java.util.Date' 

Es sieht aus wie Umwandlung von Sting Datum fehlgeschlagen.

Ich brauche Lösung, um es automatisch zu POJO ohne String zu Datum Konversationsfehler zuordnen.

Es sollte alles vorhanden sein, was Vorverarbeitung vor dem Gießen macht.

Bitte Hilfe.

+0

Sie diese überprüfen möchten: http://notetodogself.blogspot.sg/2010/12/convert-map-to-object-in-groovy.html –

Antwort

2

Endlich finde ich alternative Lösung, die am besten zu mir passt.

Ich habe Reflektion verwendet, um die ursprüngliche Objektliste mit GenericType zu erhalten.

My-Code ist als unten

def resRequestList = clientResponse.getEntity(new GenericType<ArrayList<ResourceTest>>(){}); 
2

Sie können @BindingFormat('dd-MMM-yyyy') Annotation zu Ihrem Datumsfeld in ResourceTest Klasse hinzufügen. Sie können auch die Konfigurationsoption grails.databinding.dateFormats verwenden, um das globale Standardbindungsformat festzulegen. Siehe diese Antwort für Details: Binding a Grails date from params in a controller.

Ich würde auch empfehlen, keinen Monat als Jun zu senden, da dies länderspezifisch ist und möglicherweise nicht abhängig von Ihrer Umgebung funktioniert.

+0

Hallo Droggo. Vielen Dank für die Antwort. Meine ResourceTest-Klasse ist POJO, nicht POGO. Wie füge ich @BindingFormat ('dd-MMM-yyyy') in der POJO-Klasse hinzu. –

+0

Ich habe bereits oben Lösung versucht Aber es wird nicht für mich arbeiten. –