【发布时间】:2017-02-03 08:13:01
【问题描述】:
我有一个ViewModel 并根据this post of spring.io 将jsonannotation 放在某些字段上,如下所示:
public class SurveyViewModel{
@JsonView(View.Summary.class)
private Long id;
@JsonView(View.Summary.class)
private String title;
private String description;
private String endDate;
//Here is getters & setters
}
当我从我的REST Controller 中检索数据时,如果我的方法的返回类型是List,则 json-result 是可以的:
@RequestMapping(value = "/getAllGrid", method = RequestMethod.GET)
@JsonView(View.Summary.class)
@ResponseBody
public List<SurveyViewModel> getAll{
return ModelMapper.mapList(iSurveyService.getAll(), SurveyViewModel.class);
}
但是当我对结果应用分页并将此方法的返回类型更改为QueryResult 时,json-result 为空:
@RequestMapping(value = "/getAllGrid", method = RequestMethod.GET)
@JsonView(View.Summary.class)
@ResponseBody
public QueryResult<SurveyViewModel> search(String order, int pageNumber, int pageSize) {
return ModelMapper.mapQueryResult(iSurveyService.getAllGrid(new SearchOption("", order, pageNumber, pageSize)), SurveyViewModel.class);
}
当我使用上述方法对结果应用分页时,pageNumber, totalRecords & pageSize 添加到我的 json 结果中,原始数据添加到 entityList 作为内部 json 对象,这里是 myQueryResult 的 json 格式 without 申请@JsonView:
{
"pageNumber" : 0,
"totalRecords" : 1,
"pageSize" : 10,
"entityList" : [{
"id" : 1,
"title" : "survey1",
"description" : "...",
"endDate" : "2017/01/18",
},{
"id" : 2,
"title" : "survey2",
"description" : "...",
"endDate" : "2016/11/18",
}]
}
现在我的问题是,有没有办法将@JsonView 放在带有QueryResult returnType 的控制器方法上?
【问题讨论】:
标签: java json spring-mvc jackson spring-restcontroller