2012-07-25 39 views
6

只是想通過我在服務器端用Jersey分頁的方法來運行,而在客戶端用JQuery。什麼是正確的分頁方式(特別是使用JQuery和Jersey)

在服務器上(假設用戶剛要求/ REST /用戶頁面= 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 響應過濾器,但是需要在模型類上添加Jersey特定的 註釋,我不想這樣做。
  3. 怎麼樣總可用頁面?在信息中是否有標準化的方式 ?如果我有頁面總數,我大概可以推出 完全放棄rel鏈接,並生成它們的客戶端? 這是正確的嗎?

順便說一下,鏈接標題的整個格式是怎麼產生的?表單「url; rel = name,url; rel = name」對我來說似乎有點奇怪。

編輯:發現這個http://tools.ietf.org/html/rfc5988#section-6.2,它指定假設要保證這些頁面可以被搜索引擎檢索「標準」的相關名稱

回答

0

,我建議改變你的鏈接刪除的查詢字符串。

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

其中0被解析服務器端到所需的頁碼。就整個頁面而言,你會在服務器上知道你是否已經擊中了你的用戶列表的末尾。如果是這樣,只是省略你的nextLink。同樣,如果currentPage == 0,則省略prevLink。

你可以在這裏看到這個動作:http://www.autoquoter.com/aq/en/Blog/Archives

相關問題