我现在被困了几天,试图开发一种方法来管理搜索引擎中的结果页面(就像谷歌分页系统一样)。
我有结果的总数、当前页面(从 1...开始到...最后一页)和每页的结果数(假设每页 10 个)。
在 JSP 结果页面的底部,我想显示页面的表格数据,如下所示:
假设搜索引擎返回了 470 个结果。- 基于“每页 10 个结果”,我们将总共有 47 页 (470 / 10)
这就是我想要展示的
"previous 2 3 4 5 6 7 8 9 10 Next" > 当我们点击第 10 页时,应该会发生以下情况:
“上一个 5 6 7 8 9 10 11 12 13 14 下一个”如果点击第 14 页,则:
“上一个 9 10 11 12 13 14 15 16 17 18 下一个”以此类推...
我已经设法做到以下几点
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 Next”如果我点击第 10 页 > “Previous 11 12 13 14 15 16 17 18 19 20 Next” 以此类推
有人可以帮我吗?