Ho rimesso mano al tutto ma ho sempre lo stesso problema.
Ora, nessuno reisce ad usare l'outputStream?
se si come?
il codice della mia jsp è questa (è una actionBean di struts richiamata da una jsp).
codice:
Logger logger = Logger.getLogger(this.getClass().getName());
SqlMapSingleton sqlMap = new SqlMapSingleton();
CreaQuestionario que = (CreaQuestionario)form;
int t_rep = Integer.parseInt(request.getParameter("r"));
String rel1;
String rel2;
Map parametri;
JasperPrint impress;
ArrayList lista = null;
DomandaReport dr = null;
RispostaReport rr = null;
List l_domande = null;
DataSource ds =null;
Context initCtx = null;
Context envCtx = null;
javax.sql.DataSource datas = null;
ServletOutputStream servletOutputStream = response.getOutputStream();
//code for jasperReports like initialising jasperPrint...
ServletContext context = request.getSession().getServletContext();
//sempre per le lingue, in modo da nn avare report vuoti se nn trova il testo nella lingua in uso.
List lingue = sqlMap.getSqlMap().queryForList("get_id_Lingua_Questionario_from_id_questionario",""+que.getId_questionario());
if (! (lingue.contains(""+que.getId_lingua()))){
String id_l = ""+lingue.get(0);
que.setId_lingua(Integer.parseInt(id_l));
}
switch (t_rep){
case 1:
rel1 = context.getRealPath("report/QO_report_risposte_utente.jasper");
parametri = new HashMap();
initCtx = new InitialContext();
envCtx = (Context) initCtx.lookup("java:comp/env");
datas = (javax.sql.DataSource) envCtx.lookup("jdbc/QO");
parametri.put("idLingua",""+que.getId_lingua());
parametri.put("idQuestionario",""+que.getId_questionario());
impress=JasperFillManager.fillReport(rel1, parametri, datas.getConnection());
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment; filename=Report_utenti.pdf");
JasperExportManager.exportReportToPdfStream(impress,servletOutputStream);
break;
case 2:
lista = new ArrayList();
l_domande = sqlMap.getSqlMap().queryForList("get_Domande_Chiuse_from_Questionario",new ArgQuery(""+que.getId_questionario(),""+que.getId_lingua()));
for (int i=0;i<l_domande.size();i++){
dr = (DomandaReport)l_domande.get(i);
ArrayList risp = new ArrayList();
List l_risp_tutte = sqlMap.getSqlMap().queryForList("get_Tutte_Risposte_Domanda",new ArgQuery(""+dr.getId_domanda(),""+que.getId_lingua()));
risp.addAll(l_risp_tutte);
List l_risp_date = sqlMap.getSqlMap().queryForList("get_Risposte_Date_Domanda",new ArgQuery(""+dr.getId_domanda(),""+que.getId_lingua()));
risp.addAll(l_risp_date);
dr.setRisposte(risp);
lista.add(dr);
}
rel1 = context.getRealPath("report/QO_report_percentuali.jasper");
rel2 = context.getRealPath("report/QO_report_percentuali_subreport0.jasper");
ds = new DataSource(lista);
parametri = new HashMap();
parametri.put("pathSubRel",rel2);
impress = JasperFillManager.fillReport(rel1, parametri, ds);
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment; filename=Report_domande_chiuse.pdf");
JasperExportManager.exportReportToPdfStream(impress,servletOutputStream);
break;
case 3:
lista = new ArrayList();
l_domande = sqlMap.getSqlMap().queryForList("get_Domande_Aperte_from_Questionario",new ArgQuery(""+que.getId_questionario(),""+que.getId_lingua()));
for (int i=0;i<l_domande.size();i++){
dr = (DomandaReport)l_domande.get(i);
ArrayList risp = new ArrayList();
List l_risp_date = sqlMap.getSqlMap().queryForList("get_Risposte_Date_Domanda",new ArgQuery(""+dr.getId_domanda(),""+que.getId_lingua()));
risp.addAll(l_risp_date);
dr.setRisposte(risp);
lista.add(dr);
}
rel1 = context.getRealPath("report/QO_report_testo.jasper");
rel2 = context.getRealPath("report/QO_report_testo_subreport0.jasper");
ds = new DataSource(lista);
parametri = new HashMap();
parametri.put("pathSubRel",rel2);
impress = JasperFillManager.fillReport(rel1, parametri, ds);
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment; filename=Report_domande_aperte.pdf");
JasperExportManager.exportReportToPdfStream(impress,servletOutputStream);
break;
case 4:
rel1 = context.getRealPath("report/QO_questionario_contatto.jasper");
parametri = new HashMap();
initCtx = new InitialContext();
envCtx = (Context) initCtx.lookup("java:comp/env");
datas = (javax.sql.DataSource) envCtx.lookup("jdbc/QO");
parametri.put("idLingua",""+que.getId_lingua());
parametri.put("idQuestionario",""+que.getId_questionario());
impress=JasperFillManager.fillReport(rel1, parametri, datas.getConnection());
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment; filename=Report_utenti.pdf");
JasperExportManager.exportReportToPdfStream(impress,servletOutputStream);
break;
default:
return mapping.findForward(KO);
}
servletOutputStream.flush();
servletOutputStream.close();
return mapping.findForward(OK);
}