2016-05-16 3 views
0

Я создаю что-то вроде системы управления запирающимся шкафчиком, а в шкафчиках есть история обновлений. Я хочу использовать Ajax для возврата списка этой истории до X записей в списке. Когда я возвращаю List<LockerHistoryEntity> или Iterable<LockerHistoryEntity>, возвращается количество объектов, но все объекты пустые.Spring Ajax List вернулся, но объекты пустые

Example of the problem

Ajax вызова (призван с getHistory(100) в данном случае):

function getHistory(limit) { 
    var data = {}; 
    data["limit"] = limit; 

    $.ajax({ 
     type: "POST", 
     contentType: "application/json", 
     url: "/gethistory", 
     data: JSON.stringify(data), 
     dataType: 'json', 
     timeout: 100000, 
     success : function(data) { 
      fillTable(data); 
      console.log(data); 
      console.log(data.result); 
     }, 
     error : function(e) { 
      //error 
     } 
    }); 
} 

@RestController

@JsonView(Views.Public.class) 
    @RequestMapping(value = "/gethistory", method = RequestMethod.POST, produces="application/json") 
    @ResponseBody 
    public Iterable<LockerHistoryEntity> getHistory(@RequestBody HistoryLimit limit) { 
     Iterable<LockerHistoryEntity> lockerHistory; 

     if (limit.getLimit() >= 0) { 
      lockerHistory = history.findAllLimit(limit.getLimit()); 
     } else { 
      lockerHistory = history.findAll(); 
     } 

     return lockerHistory; 
    } 

При использовании для цикла, чтобы распечатать данные lockerHistory все отображается правильно.

К сожалению, я не мог найти ни одной темы об этой точной проблеме, отсюда этот пост.

+0

Вы пытались конвертировать объект в JSON? Я нахожу полезную ссылку здесь http://www.baeldung.com/spring-httpmessageconverter-rest надеюсь, что это помогает –

+1

Спасибо, решила это действительно. Забыл разобрать JSON. – Randyr

ответ

1

Вам необходимо преобразовать объект в форму JSON перед отправкой ответа на AJAX. Посмотри эту ссылку: http://howtodoinjava.com/jackson/jackson-examples-convert-java-object-to-from-json/

+0

Спасибо, решила его с помощью 'ObjectMapper.mapper.writerWithDefaultPrettyPrinter(). WriteValueAsString (lockerHistory);' Вернул массив объектов как String. Для любых будущих людей не забудьте использовать $ .parseJSON() в javascript в строке. – Randyr

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