Настройте представление 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;
}
}
Это не проверено, но должно быть близко.