Настройте представление JSON с помощью Jackson для Dynatable

Я работаю над приложением Spring Boot. В представлении html я выполняю ajax-вызов RestController, который возвращает список пользовательских объектов:

@Controller
public class MyController {
    @ResponseBody
    @JsonView(View.MyView.class)
    public List<CustomEntity> getEntities() {
        ...
    }
}

Это работает нормально, я получаю, как и ожидалось, следующую структуру:

{
    "id": "1",
    "name": "Test1"
},
{
    "id": "2",
    "name": "Test2"
}

По мнению, я хочу использовать его с Dynatable. И тут возникает моя проблема. Мне нужна следующая структура:

{
  "records": [
    {
      "id": "1",
      "name": "Test1"
    },
    {
      "id": "2",
      "name": "Test2"
    }
  ],
  "queryRecordCount": 2,
  "totalRecordCount": 2
}

Есть ли способ сгенерировать представление JSOn, используя Джексона (или любую другую платформу) на основе шаблона, чтобы я мог использовать данные с Dynatable, и если да, то как?

Заранее спасибо,

Stephan

1 ответ

Решение

Вы можете создать оболочку, которая сделает это за вас...

class DyntableResponse<T> {
  private List<T> records;
  public List<T> getRecords() { return records; }
  public void setRecords(final List<T> records) { this.records = records; }
  public int getQueryRecordCount() { return records.size(); }
  public int getTotalRecordCount() { return records.size(); }
}

А затем верните его из вашего RestController...

@Controller
public class MyController {
    @ResponseBody
    @JsonView(View.MyView.class)
    public DyntableResponse<CustomEntity> getEntities() {
       final DyntableResponse<CustomEntity> resp = new DyntableResponse<>();
       resp.setRecords(...); // Your finder here.
       return resp;
    }
}

Это не проверено, но должно быть близко.

Другие вопросы по тегам