2016-05-18 2 views
2

Я использую плагин Grails 2.4 и jersey request builder.Grails LazyMap to POJO Conversion не удалось из-за значения даты

Я получаю ошибку ниже на

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

ошибки

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' 

Похоже, преобразование не удалось из Стинга на сегодняшний день.

Мне нужно решение, чтобы автоматически сопоставить его с POJO без ошибки на цепочке до даты.

Перед литьем должно быть все, что делает предварительную обработку.

Пожалуйста, помогите.

+0

вы можете проверить это: http://notetodogself.blogspot.sg/2010/12/convert-map-to-object-in-groovy.html –

ответ

2

Наконец-то я нахожу альтернативное решение, которое лучше всего подходит для меня.

Я использовал отражение, чтобы получить исходный список объектов, используя GenericType.

Мой код, как показано ниже

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

Вы можете добавить @BindingFormat('dd-MMM-yyyy') аннотация к своему дате в поле ResourceTest. Вы также можете использовать опцию grails.databinding.dateFormats config для установки стандартного глобального формата привязки. См. Этот ответ для получения более подробной информации: Binding a Grails date from params in a controller.

Я бы также рекомендовал не отправлять месяц как Jun, так как он специфичен для локали и может не работать в зависимости от вашей среды.

+0

Привет, Дрогго. Спасибо за ответ, класс My ResourceTest - POJO не POGO. Как добавить @BindingFormat ('dd-MMM-yyyy') в класс POJO. –

+0

Я уже опробовал решение, но для меня это не сработает. –