2016-03-06 3 views
0

Сначала я попытался это отправить обратно ответ листа (я использую AJAX так в проделанных частях я ожидаю ответ списка):Spring @ResponseBody возвращение Списка

@RequestMapping(value = "/a", method = RequestMethod.POST) 
public @ResponseBody List<Xy> a(@RequestBody OtherClass oc, Model model) { 
    ....codes 
    List<Xy> objList = xyRepository.findAll(); 
    return objList; 
} 

Тогда это:

@RequestMapping(value = "/a", method = RequestMethod.POST) 
public @ResponseBody ListWrapper a(@RequestBody OtherClass oc, Model model) { 
    ...codes 
    List<Xy> objList = xyRepository.findAll(); 
    ListWrapper lw = new ListWrapper(); 
    lw.setObjList(objList); 
    return lw; 
} 

Однако с обоими из них я получаю ту же ошибку, которая повторяется много раз, но она не зацикливается навсегда, поэтому я могу перемещаться по сайту.

:2.6.5] 
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) ~[jackson-databind-2.6.5.jar:2.6.5] 
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:693) ~[jackson-databind-2.6.5.jar:2.6.5] 
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:675) ~[jackson-databind-2.6.5.jar:2.6.5] 
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) ~[jackson-databind-2.6.5.jar:2.6.5] 
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:149) ~[jackson-databind-2.6.5.jar:2.6.5] 
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:111) ~[jackson-databind-2.6.5.jar:2.6.5] 
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:24) ~[jackson-databind-2.6.5.jar:2.6.5] 
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:693) ~[jackson-databind-2.6.5.jar:2.6.5] 
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:675) ~[jackson-databind-2.6.5.jar:2.6.5] 
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) ~[jackson-databind-2.6.5.jar:2.6.5] 
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:693) ~[jackson-databind-2.6.5.jar:2.6.5] 
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:675) ~[jackson-databind-2.6.5.jar:2.6.5] 
+0

Вы отправляете трассировку стека, но не сообщение об исключении. Могли бы вы? – acdcjunior

+0

в вашем stacktrace отсутствует сообщение об ошибке –

+0

Это все, что я получаю снова и снова. – Grego

ответ

2

Похоже, у вас есть круговая ссылка в классе, возвращаемом из хранилища (xy).

Установите точку останова в BeanSerializer.157 или в любом другом месте из stacktrace. Тогда у вас есть возможность увидеть, какие свойства serisalizer пытается сериализовать. Из этого вы сможете найти проблемное свойство.

Как только вы обнаружили проблемное свойство, вы можете исключить его из сериализации JSON. Вы можете сделать это с помощью

@JsonIgnoreProperties({"foobar"}) 
+0

Да У меня было несколько полей один-ко-многим и много-к-одному , Как только я пропустил те и «обработчик» плюс «hibernateLazyInitializer», он начал работать. – Grego

Смежные вопросы