PDA

View Full Version : [JSP] Elenco su più pagine


Alhazred
05-05-2008, 15:26
Sto realizzando un'applicazione web che ad un certo punto dovrà restituire un lungo elenco di prodotti in una tabella.
Siccome l'elenco potrebbe essere davvero molto lungo stavo pensando di dividerlo su più pagine, ma questa cosa dovrà essere ovviamente fatta dinamicamente dall'applicazione perché potrebbero esserci prodotti diversi (qualcuno che viene aggiunto, qualcuno che viene eliminato) a seconda di quando questo elenco viene richiamato.
In pratica dovrebbe venir fuori una cosa gestita come le pagine del forum, pulsanti avanti/indietro e numeri per andare subito su una pagina specifica.
Sotto ho un DB MySQL.
Mi sapreste dare qualche idea su come realizzare questa cosa? Non mi serve codice, solo idee realizzative :)

gugoXX
05-05-2008, 16:40
Per fare quanto vuoi, ci sono componenti ormai standard per quasi tutte le tecnologie, e vanno sotto il nome di GridView (dataview, gridtable, tableview, etc.)

ianaz
06-05-2008, 07:39
Ho provato a spiegarmi ma non ci sono riuscito xD
Ti passo un esempio di codice... Per la query SQL devi fare LIMIT " + parto_da_quale + ", " + quanti_ne_vuoi_per_pagina + "

/**
*
* @author ianaz
*/
public class PagineNumerate {
private int elementi;
private int totale_elementi;
private String url;
private int pagina_attuale;

public PagineNumerate(int elementi, int totale_elementi, String url, int pagina_attuale){
this.elementi = elementi;
this.totale_elementi = totale_elementi;
this.url = url;
this.pagina_attuale = pagina_attuale / elementi;
}

public String stampa(){
StringBuffer b = new StringBuffer();
int pagine = (int)Math.floor(totale_elementi / elementi) + 1;

for(int i = 1; i <= pagine; i++){
if(pagina_attuale == i - 1){
b.append("" + i + "&nbsp;");
}
else {
b.append("<a href=\"" + url + "?p=" + (i - 1) * elementi + "\">" + i + "</a>&nbsp;");
}
}


return b.toString();
}


Che richiamerai con:
<%@ page import="org.ianaz.util.PagineNumerate" %>
<%
PagineNumerate paginenumerate = new PagineNumerate(10, tot_img - 1, "", start);
out.print("Pagine: " + paginenumerate.stampa());
%>


Potrebbe avere alcune cose che non funzionano ma il ragionamento é questo...a me funziona :)

Alhazred
06-05-2008, 10:13
Grazie a tutti e due, mi ci metto su e vedo cosa riesco a tirare fuori :)