Здравствуйте, я использую jqgrid для своего проекта, и мне нужно было реализовать нумерацию страниц, поэтому я нашел код в php и скопировал его в java:
@RequestMapping(value = "getgriddata", method = RequestMethod.GET)
public @ResponseBody
String getGrid(@RequestParam("page") String page, @RequestParam("rows") int rownumber, @RequestParam("sidx") String sortBy, @RequestParam("sord") String sortOrder,@RequestParam(value = "_search") String search, @RequestParam(value="filters", required = false) String filters) {
int totalCount = dao.getTotalRecordCount();
CustomJsonResponse response = new CustomJsonResponse();
int totalPages = 0;
if (totalCount > 0) {
totalPages = (int) Math.ceil(totalCount/rownumber);
}
if (Integer.valueOf(page) > totalPages) {
page = String.valueOf(totalPages);
}
Gson jsonConverter = new Gson();
int start = (rownumber * Integer.valueOf(page)) - rownumber;
Filters searchFilter = null;
if(Boolean.valueOf(search) == true){
searchFilter = jsonConverter.fromJson(filters, Filters.class);
}
// Retrieve records from database
List<Record> recorBatch = dao.getRecords(start, rownumber, sortBy, sortOrder, search, searchFilter);
// Assign the result from the service to this response
response.setRows(recorBatch);
response.setTotal(String.valueOf(totalPages));
response.setRecords(String.valueOf(stagingLoadBatch.size()));
response.setPage(page);
return jsonConverter.toJson(response);
}
Это работает нормально, когда я работаю со всем набором данных, но когда я сужаю поиск, то есть выбираю записи через некоторый промежуток времени, разбиение на страницы разбивается. Я понял, что это плохая практика, я скопировал его из этого кода для нумерации страниц:
http://pastebin.com/ybKSXzyq
Кто-нибудь может предложить лучшее решение для этого?