Salve a tutti,
ho un importante problema da risolvere. Sono giorni che ci sto sbattendo la testa
Allora ho realizzato una pagina jsp che ha una tabella che contiene 300.000 record.
In pratica alla pagina viene passata una lista di 300.000 oggetti che viene stampata. Fin qui tutto ok.
Ho una funzione che mi permette di esportare il contenuto della tabella in un file format "csv".
Soltante che invece di generarmi un file csv con i relativi record mi stampa i record in pagina con se fosse una pagina html.
Se invece di stampare la lista completa stampo la lista da o a 100 invece mi viene correttamente generato il file csv.
Dove sbaglio???
Il file csv viene mostrato fino ad un massimo di 200record dopo di che i dati vengono stampati in pagina.
Posto un po di codice.
codice:
protected static final String CSV_DEF_SEPARATOR = ",";
protected NumberFormat numericFormatter = new DecimalFormat("#0.#########", new DecimalFormatSymbols(new Locale("it"))); //prende da 0 a 9 decimali
private static final String TITOLI_ESITO=new String("CLIENTE FINALE"+CSV_DEF_SEPARATOR+"CONSUMI"+CSV_DEF_SEPARATOR+"ESITO"+CSV_DEF_SEPARATOR+"MESSAGGIO");
private static final String TITOLI_TEMPLATE=new String("clienteFinale"+CSV_DEF_SEPARATOR+"consumi");
protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception {
String btnType=(String)request.getParameter("buttonType");
String fileName=(String)request.getSession().getAttribute("fileName");
List righeCsv = null;
PrintWriter pw = response.getWriter();
if(fileName==null){
if("template".equals(btnType))
fileName="Template_Upload_Consumi";
if("download".equals(btnType)){
fileName="Download_Consumi_"+sessione.getAnnoTermico();
List consumiNuovi = (List)request.getSession().getAttribute("consumiNuoviOldList");
ConsumiNuoveAtt currentConsumi = null;
righeCsv = new LinkedList();
for (int i=0;i<[COLOR=red]consumiNuovi.size();[/COLOR=red]i++){
currentConsumi = (ConsumiNuoveAtt)consumiNuovi.get(i);
righeCsv.add(currentConsumi.getClienteFinale()+CSV_DEF_SEPARATOR+numericFormatter.format(currentConsumi.getConsumi()));
}
}
pw.write(TITOLI_TEMPLATE+"\n");
}
else{
fileName = "Esito_" + fileName;
fileName = fileName.substring(0, fileName.lastIndexOf(".csv"));
pw.write(TITOLI_ESITO+"\n");
righeCsv = (List) request.getSession().getAttribute("righeCsv");
}
if(righeCsv!=null){ //se è null si sta creando il csv di template
for(int i=0;i<righeCsv.size(); i++){
pw.write(righeCsv.get(i)+"\n");
}
}
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=\""+fileName+".csv\";");
// reset della variabile di sessione
request.getSession().setAttribute("fileName", null);
OutputStream out=response.getOutputStream();
pw.write(out);
pw.flush();
pw.close();
}
Sapete darmi un consiglio???
Aspetto presto vostre notizie
grazie