我试图从html页面的分页中加载ajax调用中的数据,但不知何故它不起作用。不能理解这个问题
我已经检查了这个链接,但是ajax调用在我的代码中不起作用,我需要获取公司注册列表,并在datatable中填充分页的实现,同时通过分页控制页面的加载时间。(就像记录是5000,所有这些记录一起加载,我需要从ajax修复服务器端分页)
Passing pageable (spring data) in post request
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js">
<script type="text/javascript">
$(document).ready(function(){
$('#shortstorage').DataTable({
"pageLength": 5,
"processing": true
"serverSide": true
"ajax": {
"url": "/getcompany",
"type": "GET"
}
}
} );
});
</script>调用控制器中的getcompanyy方法。
@RequestMapping(value = "/getcompanyy", method = RequestMethod.GET)
public String getCompanyy(Model model,HttpServletRequest request, @PageableDefault(value=10, page=0) Pageable pageable) {
pageable = new PageRequest(pageable.getPageNumber(), pageSize, sort);
Page<CompanyRegistration> compregPag = companyregister.findAll(pageable);
List<CompanyRegistration> compreg = compregPag.getContent();
model.addAttribute("compreg",compreg);
return "admin/company";错误
代码正在加载数据表中的所有行,而没有应用
的分页。
发布于 2020-06-10 10:54:36
您实际上应该返回JSONObject,看看这个RestController,我认为这是您需要的:
<table id="shortstorage" class="display">
</table>
$(document).ready( function () {
var table = $('#shortstorage').DataTable({
ajax: '/base/getcompany',
sAjaxDataProp: 'data',
processing: true,
serverSide: true,
// "order": [[ 0, "asc" ]],
columns: [
{ data: "id", title : 'id'},
{ data: "name", title: 'name' },
{ data: "shortname", title: 'shortname' }
]
})});
@RequestMapping(path = "/getcompany", method = RequestMethod.GET)
public Map< String, Object > getcompany(@RequestParam Map<String, String> data) {
Map<String, Object> result = new HashMap<>();
Integer draw = Integer.parseInt(data.get("draw"));
ArrayList<Object> youObjectsSelected = new ArrayList<>(); // put your selected objects here
int start = Integer.parseInt(data.get("start"));
int length = Integer.parseInt(data.get("length"));
for( int j = 0; j < 50; j++ ){
Company company = new Company();
company.setId(j);
company.setName("someName");
company.setShortname("shortName");
youObjectsSelected.add(company);
}
ArrayList<Object> yourSObjectsForPage = new ArrayList<>(); // get only objects for displaying on page
for( int k = start; k < start + length; k++ ){
yourSObjectsForPage.add( youObjectsSelected.get(k) );
}
result.put("draw", draw);
result.put("recordsTotal", 100);
result.put("recordsFiltered", youObjectsSelected.size());
result.put("data", yourSObjectsForPage);
return result;
}从开始和长度(从数据)获得的分页数和页数:
int = Integer.parseInt(data.get(" start "));
整数长度= Integer.parseInt(data.get(" length "));
并根据它们从数据库中为行选择对象,例如,arrayList。
发布于 2020-06-10 11:01:26
Page<CompanyRegistration> compregPag = companyregister.findAll(pageable);
//List<CompanyRegistration> compreg = compregPag.getContent();
model.addAttribute("compregPag",compregPag); compregPag有需要的内容和元数据。使用它作为模型属性。
https://stackoverflow.com/questions/62296439
复制相似问题