2016-09-26 21 views
1

我有一個ViewModel,把json標註上一些領域根據this post of spring.io象下面這樣:有沒有什麼辦法把@JsonView放在Controller方法和QueryResult returnType上?

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,結果是OK:

@RequestMapping(value = "/getAllGrid", method = RequestMethod.GET) 
@JsonView(View.Summary.class) 
@ResponseBody 
public List<SurveyViewModel> getAll{ 
    return ModelMapper.mapList(iSurveyService.getAll(), SurveyViewModel.class); 
} 

但是,當我在我的結果&這種方法的變更返回類型適用分頁QueryResult,JSON,結果是空的:

@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對象,這是我的QueryResult JSON格式而不申請@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?

回答

1

QueryResult是,我使用的分頁的對象,我通過把@jsonViewQueryResult類的屬性,像下面解決我的問題:

public class QueryResult<T> { 
    @JsonView(View.Summary.class) 
    private int pageNumber; 
    @JsonView(View.Summary.class) 
    private int totalRecords; 
    @JsonView(View.Summary.class) 
    private int pageSize; 
    @JsonView(View.SummaryWithRecipients.class) 
    private List<T> entityList = new ArrayList<T>(); 
    //Here is getters & setters 
} 
相關問題