Mar*_*ven 6 jquery pagination httpresponse jersey
只想运行我在服务器端与Jersey的分页方法,以及客户端上的JQuery.
在服务器上(假设用户刚刚请求/休息/用户?page = 1):
// Hardcoded the page number here, but it would be page-1, page+1
String prevLink = uriInfo.getRequestUri() + "?page=0";
String nextLink = uriInfo.getRequestUri() + "?page=2";
String linkHeader = String.format(LINK_HEADER_TMPL, prevLink, nextLink);
return List<User> currentPageResults;
Run Code Online (Sandbox Code Playgroud)
这给了我响应中的以下标题:
Link: <http://localhost:8880/rest/users?page=0>; rel="prev", <http://localhost:8880/rest/users?page=2>; rel="next"
Run Code Online (Sandbox Code Playgroud)
在客户端:
var xhr = $.getJSON("rest/users", function(allData) {
var links = (xhr.getResponseHeader("link")).split(',');
var relLinks = [];
$.each(links, function(index, value) {
var parts = value.split(';');
var url = parts[0].replace(/^.*<(.*)>.*$/m, '$1');
var rel = parts[1].replace(/^.*"(.*)".*$/m, '$1');
relLinks[rel] = url;
});
alert(relLinks['prev']);
Run Code Online (Sandbox Code Playgroud)
警报给了我正确的东西,是我用来生成我的页面链接的东西:
http://localhost:8880/rest/users?page=0
Run Code Online (Sandbox Code Playgroud)
所以问题:
顺便说一句,链接头的整个格式是如何产生的?形式"url; rel = name,url; rel = name"对我来说似乎有点奇怪.
编辑:找到这个http://tools.ietf.org/html/rfc5988#section-6.2,它指定'标准'关系名称
假设您想确保搜索引擎可以检索这些页面,我建议您更改链接以删除查询字符串。
http://localhost:8880/rest/users/0
Run Code Online (Sandbox Code Playgroud)
其中 0 在服务器端解析为所需的页码。就总页数而言,您将在服务器上知道您是否已到达用户列表的末尾。如果是这样,只需省略您的 nextLink 即可。同样,如果 currentPage == 0 则省略 prevLink。
您可以在此处查看此操作:http://www.autoquoter.com/aq/en/Blog/Archives