分页的正确方法是什么(尤其是JQuery和Jersey)

时间:2012-07-25 11:53:25

标签: jquery pagination jersey httpresponse

只想运行我在服务器端与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;

这在响应中给出了以下标题:

Link: <http://localhost:8880/rest/users?page=0>; rel="prev", <http://localhost:8880/rest/users?page=2>; rel="next"

在客户端:

 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']);

警报给了我正确的东西,并且是我用来生成我的页面链接的内容:

http://localhost:8880/rest/users?page=0

所以问题:

  1. 我的链接标题是否格式正确?解析链接头 客户方似乎有点惶恐不安。
  2. 这是正确/可接受的方式吗?我看着泽西岛 响应过滤器,但这需要添加特定于Jersey的 模型类上的注释,我不想这样做。
  3. 总可用页面怎么样?是否有标准化的方式 在信息中给出这个?如果我有页面总数,我可以推测 完全删除rel链接,只是生成它们客户端? 那会是正确的吗?
  4. 顺便提一下,链接头的整个格式是如何产生的?表格“url; rel = name,url; rel = name”对我来说似乎有点奇怪。

    编辑:找到此http://tools.ietf.org/html/rfc5988#section-6.2,指定“标准”关系名称

1 个答案:

答案 0 :(得分:0)

假设您希望确保搜索引擎可以检索这些网页,我建议您更改链接以删除查询字符串。

http://localhost:8880/rest/users/0

其中0被解析为服务器端到所需的页码。就总页数而言,如果您已经点击了用户列表的末尾,您就会在服务器上知道。如果是这样,只需省略你的nextLink。同样,如果currentPage == 0则省略prevLink。

您可以在此处查看此操作:http://www.autoquoter.com/aq/en/Blog/Archives