1

我正在开发一个 Spring Boot 应用程序。在 html 视图中,我对 RestController 进行了 ajax 调用,它返回自定义实体列表:

@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 一起使用,如果可以,如何?

提前致谢,

斯蒂芬

4

1 回答 1

2

您可以创建一个为您执行此操作的包装器...

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;
    }
}

这是未经尝试的,但应该很接近。

于 2016-02-15T17:23:20.303 回答