Spring MVC @JsonView и @ResponseBody не отображают вложенный список - PullRequest
0 голосов
/ 30 января 2020

Я работаю с DataTables и Spring MVC.

Я пытаюсь вернуть DataTablesOutput <> с @JsonView и @ResponseBody следующим образом

    @GetMapping(value = "/list/paginated", produces = "application/json; charset=utf8")
    @JsonView(DataTablesOutput.View.class)
    public @ResponseBody DataTablesOutput<StateEntity> showStateListPaginated(@Valid 
DataTablesInput input) throws JsonProcessingException {

    DataTablesOutput<StateEntity> dataTablesOutput = stateDataTablesDao.findAll(input);
    return dataTablesOutput;
}

Затем я получаю что-то вроде это в браузере {"draw": 1, "recordsTotal": 17, "recordsFiltered": 17, "data": [{}, {}, {}, {}, {}], "error": null} все отображается правильно, но «данные» пусты, что является фактическими данными, которые будут отображаться в таблице данных.

Но когда я выполняю следующий код, который в значительной степени совпадает с @JsonView (DataTablesOutput.View.class) затем я вижу, что все отображается правильно

    DataTablesOutput<StateEntity> dataTablesOutput = stateDataTablesDao.findAll(input);
    ObjectMapper objectMapper = new ObjectMapper();
    String json = objectMapper.writerWithView(DataTablesOutput.View.class)
                              .writeValueAsString(dataTablesOutput);

    System.out.println(json);

Результат приведенного выше кода в окне консоли выглядит следующим образом:

{"draw":1,"recordsTotal":17,"recordsFiltered":17,"data":[{"id":1,"name":"new york","enabled":true,"createdAt":1579490984000,"updatedAt":1580287533000},{"id":3,"name":"washington","enabled":true,"createdAt":1579599713000,"updatedAt":1579599713000},{"id":5,"name":"cali","enabled":true,"createdAt":1579675923000,"updatedAt":1579675923000},{"id":6,"name":"boston","enabled":true,"createdAt":1579699731000,"updatedAt":1579699731000},{"id":7,"name":"gotham","enabled":true,"createdAt":1580327848000,"updatedAt":1580327848000}],"error":null}

Я не могу найти причину, по которой возвращается json иметь пустые «данные». Есть ли какая-либо проблема между @JsonView и @ResponseBody или чем-то еще?

Не могли бы вы, ребята, увидеть что-нибудь, что вызывает эту проблему, и любое решение, пожалуйста?

...