javaspring数据分页与AJAX
我有下面的控制器,我刚刚在返回的结果中加入了分页
@RequestMapping(value = "/search/{person}", produces="application/json", method = RequestMethod.GET)
public Page<Person> findAllPersons(@PathVariable String person) {
Page<Person> list = personRepo.findAll(new PageRequest(1, PAGE_SIZE));
return list;
}
我现在正试图弄清楚如何实际地对这些结果进行制表——Person表上的搜索是它自己的AJAX请求,在我的UI工具上选择“next”或“previous”可以启动它自己的GET
<a id="previous" href="onclick="setPageNumber(1)">
<a id="next" href="onclick="setPageNumber(2)">
function setPageNumber(num) { //relaunch request with page number value retrieved from previous or next}
我是否应该将页码作为@PathVariable
包含,如下所示:
@RequestMapping(value = "/search/{person}/{pageNumber}", produces="application/json", method = RequestMethod.GET)
public Page<Person> findAllPersons(@PathVariable String person, @PathVariable int pageNumber) {
Page<Person> list = personRepo.findAll(new PageRequest(pageNumber, PAGE_SIZE));
return list;
}
或者设置pageNumber是否应该是一个完全独立的控制器方法,以某种方式使用pageNumber参数调用findAllPersons
?我可能在这里把自己弄糊涂了-欢迎任何意见,谢谢
# 1 楼答案
我知道这篇文章很长一段时间都不活跃,但对于仍在寻找将Spring分页与Ajax结合使用的方法的人来说,以下是一些可能的解决方案:
1如果您的存储库是
JpaRepository
(或者更准确地说PagingAndSortingRepository
)的实例,那么您只需将Pageable
传递给它:2您也可以将分页参数检索为
@RequestParam
并自己创建一个PageRequest
,而不是Pageable
。如果项目不使用Spring数据和JPA,这种方法可能会很有用:(例如,上面的这个存储库可能是一个扩展JDBCRepository的类,比如this one)
对于这两种可能的解决方案中的AJAX部分,可以使用类似的方法:
3或者,如果您使用Thymeleaf+Spring数据there is a dialect自动添加分页
# 2 楼答案
对于REST服务,我将把它放在参数中,而不是放在URIpage\u start=X&;页面大小=Y