我被困了幾天了,試圖開發一種管理搜索引擎結果頁面的方法(就像谷歌分頁系統)。java中的分頁
我有結果總數,當前頁面(從1 ...開始到最後一頁)以及每頁結果數量(比方說每頁10個)。
在JSP結果頁面的底部,我想如下顯示的頁面的表格數據:
假設搜索引擎返回結果470。 - 基於 「每頁10分的結果」,我們將有一個總的47頁(十分之四百七十零)
這是我想顯示什麼
「前2 3 4 5 6 7 8 9 10下一頁「>當我們點擊第10頁上的,這是應該發生的事情:
‘以前的5 6 7 8 9 10 11 12 13 14下一頁’如果第14頁被點擊,則:
」以前9 10 11 12 13 14 15 16 17 18 Next「ans such ...
我已經設法做到了下面
public class Test {
public static int [] getIntervalNumberPages(
final int pNumberHits,
final int pNumberTotalHits,
final int pNumberCurrentPage,
final int pNumberResultsPerPage) {
// Page interval
final int NB_PAGES_INTERVAL = 10;
// Initialise table
int [] vResult = new int [0];
// If no results found or if number of documents per page = 0
if (pNumberHits != 0 && pNumberResultsPerPage != 0) {
// Total number of pages
int vNumberTotalPages = (int) java.lang.Math.ceil(pNumberTotalHits/(double) pNumberResultsPerPage);
// First number of the list
int vPremierNumero = 0;
// Last number of the list
int vDernierNumero = 0;
// managing multiples
if (pNumberCurrentPage >= NB_PAGES_INTERVAL && pNumberCurrentPage % NB_PAGES_INTERVAL == 0) {
vPremierNumero = (pNumberCurrentPage/NB_PAGES_INTERVAL - 1) * NB_PAGES_INTERVAL + 1;
vDernierNumero = java.lang.Math.min(vNumberTotalPages, (pNumberCurrentPage/NB_PAGES_INTERVAL - 1) * NB_PAGES_INTERVAL + NB_PAGES_INTERVAL);
} else {
vPremierNumero = pNumberCurrentPage/NB_PAGES_INTERVAL * NB_PAGES_INTERVAL + 1;
vDernierNumero = java.lang.Math.min(vNumberTotalPages, pNumberCurrentPage/NB_PAGES_INTERVAL * NB_PAGES_INTERVAL + NB_PAGES_INTERVAL);
}
vResult = new int [vDernierNumero - vPremierNumero + 1];
// Fill in table
for (int vCpt = 0; vCpt < vResult.length; vCpt++) {
vResult [vCpt] = vPremierNumero + vCpt;
}
}
return vResult;
}
}
但是我的代碼是這樣工作的:
「1 2 3 4 5 6 7 8 9 10下一頁」 如果我點擊頁面10> 「上一頁上11 12 13 14 15 16 17 18 19 20下一個「ans so
有人可以幫我嗎?
非常感謝你。這以一種非常簡單的方式解決了這個問題。再次感謝您寶貴的幫助。 – user1353307
非常歡迎。:) – Keppil
@ user1353307:你不會在這裏說'謝謝',但是upvote有用,正確和好的答案(向上的三角形)。這有助於你最多的還是你接受最好的答案之一(登記號)。 –