使用 Jackson 为 Dynatable 自定义 JSON 视图
Customize JSON view with Jackson for Dynatable
我正在开发 Spring 引导应用程序。在 html 视图中,我对 RestController 进行了 ajax 调用,其中 returns 自定义实体列表:
@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
}
有没有一种方法可以使用基于模板的 jackson(或任何其他框架)生成 JSOn 视图,这样我就可以将数据与 Dynatable 一起使用,如果可以,怎么做?
提前致谢,
斯蒂芬
您可以创建一个包装器来为您完成此操作...
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(); }
}
然后 return 它来自你的 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;
}
}
这是未经尝试的,但应该接近。
我正在开发 Spring 引导应用程序。在 html 视图中,我对 RestController 进行了 ajax 调用,其中 returns 自定义实体列表:
@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
}
有没有一种方法可以使用基于模板的 jackson(或任何其他框架)生成 JSOn 视图,这样我就可以将数据与 Dynatable 一起使用,如果可以,怎么做?
提前致谢,
斯蒂芬
您可以创建一个包装器来为您完成此操作...
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(); }
}
然后 return 它来自你的 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;
}
}
这是未经尝试的,但应该接近。