場景:
本系統用的Mybatis分頁插件PageHelper,調用了外部系統返回的數據為String類型的JSON串,數據量畢竟多,界面需要分頁展示。
解決思路:
返回數據轉List,然后把多個List放到一個List里,然后在從這個List里進行分頁,前端只需要傳一個頁碼過來即可,
部分代碼如下:
Service代碼
ResponseMsg<AppResp> responseMsg = new ResponseMsg<>();
int currentPage = req.getCurrentPage();
int pageSize = req.getPageSize();
String str= "[{"id":1546051323216,"name":"TPCE測試流程"},{"id":1546051343822,"name":"TPC-DS測試流程"}]";//例子
List list = JSONArray.parseArray( str );
List<Object> objects = new ArrayList<>();
int num = (currentPage > 1 ? (currentPage - 1) * pageSize : 0);
assert list != null;
for (int i = 0; i < pageSize && i < list.size() - num; i++) {
objects.add( list.get( num + i ) );
}
AppResp appResp = new AppResp();
appResp.setList( objects );
responseMsg.setResult( appResp );
responseMsg.setCurrentPage( currentPage );
responseMsg.setTotal( list.size() );
js代碼:
$scope.list = [];
$scope.currentPage = 1;
$scope.pageSize = 10;
$scope.getProcessList = function () {
PARAM_BODY.currentPage = $scope.currentPage;
PARAM_BODY.pageSize = $scope.pageSize;
$http({
method: 'POST',
url: options.app_api + '/app/getProcessList',
data: JSON.stringify(PARAM_BODY)
}).success(function (data) {
$scope.list = data.result.list;
$scope.currentPage = data.currentPage;
$scope.total = data.total;
});
};