2016-02-15 35 views
1

我正在開發Spring Boot應用程序。在HTML視圖,我做出一個RestController,返回自定義實體列表的Ajax調用:使用Jackson爲Dynatable定製JSON視圖

@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使用數據,以及如何?

由於提前,

斯蒂芬

回答

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

這是未嘗試,但應該是接近。

+0

謝謝,這個伎倆。我只需要做一個簡單的補充。在'DyntableResponse'類中,註釋'@JsonView(View.MyView.class)'必須被添加到每個屬性,它必須出現在json中。 – Stephan