Je suis bloqué depuis quelques jours, en essayant de développer une méthode de gestion des pages de résultats dans un moteur de recherche (comme le système de pagination google).Pagination en Java
J'ai le nombre total de résultats, la page actuelle (commence à partir de 1 ... à ... Dernière page), et le nombre de résultats par page (disons 10 par page).
au bas de la page de résultats JSP, je veux afficher les données tabulaires de pages comme suit:
suppose que le moteur de recherche a donné 470 résultats. - Sur la base de "10 résultats par page", nous aurons un total de 47 pages (470/10)
Voici ce que je veux afficher
« précédent 2 3 4 5 6 7 8 9 10 Suivant "> lorsque l'on clique sur la 10 la page voici ce qui devrait se produire:
"précédent 5 6 7 8 9 10 11 12 13 14 Suivant" si la 14e page est cliqué, puis:
" précédent 9 10 11 12 13 14 15 16 17 18 Suivant "ans et ainsi de suite ...
J'ai réussi à faire ce qui suit
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;
}
}
Cependant mon code fonctionne comme suit:
"1 2 3 4 5 6 7 8 9 10 Suivant" si je clique sur la page 10> « Précédent 11 12 13 14 15 16 17 18 19 20 Suivant "ans so
quelqu'un peut-il m'aider s'il vous plaît ??
Merci beaucoup. Ceci, d'une manière très simple, a résolu le problème. Merci encore pour votre aide précieuse. – user1353307
Vous êtes les bienvenus.:) – Keppil
@ user1353307: Vous ne dites pas «merci» littéralement ici, mais upvote utiles, bonnes et bonnes réponses (triangle vers le haut). Celui qui vous a aidé le plus ou la meilleure réponse que vous acceptez (signe de contrôle). –