20/08/16 21:11
splittik
Ciao a tutti.
Ho una jsp che genera una tabella in cui l'ultima cella è un bottone che serve per raccogliere i dati della riga, passare i dati alla servel, la quale genera un document che viene scaricato in locale come pdf.
Alla pressione del bottone vengono mandati e processati i dati, ma il download non parte. Avevo implementato una versione in cui ogni riga della tabella era un form tuttavia devo usare delle datatable e quindi il mio primo approccio funzionava ma era sbagliato.
Nei log del server non ci sono errori ...non so cosa fare
ListAutist.size è un ArrayList con il risultato di una query
codice js
codice della servlet
Ho una jsp che genera una tabella in cui l'ultima cella è un bottone che serve per raccogliere i dati della riga, passare i dati alla servel, la quale genera un document che viene scaricato in locale come pdf.
Alla pressione del bottone vengono mandati e processati i dati, ma il download non parte. Avevo implementato una versione in cui ogni riga della tabella era un form tuttavia devo usare delle datatable e quindi il mio primo approccio funzionava ma era sbagliato.
Nei log del server non ci sono errori ...non so cosa fare
ListAutist.size è un ArrayList con il risultato di una query
for (int i = 0; i < ListAutist.size(); i++) { beanA = (BeanAssenza) ListAutist.get(i); out.println("<tr role='row' class='odd'><td class='sorting_1' id='Autista'>" + beanA.getAutista() + "</td>"); out.println("<td>" + beanA.getDa_ora() + "</td>"); out.println("<td>" + beanA.getDa_giorno() + "</td>"); out.println("<td>" + beanA.getA_ora() + "</td>"); out.println("<td>" + beanA.getA_giorno() + "</td>"); out.println("<td>" + beanA.getTipo_assenza() + "</td>"); out.println("<td>" + beanA.getData_dichiarazione() + "</td>"); String nome = URLEncoder.encode(beanA.getAutista(), "UTF-8"); out.println("<input type='hidden' name='array' value=" + nome + ">"); out.println("<input type='hidden' name='array' value=" + beanA.getDa_ora() + ">"); out.println("<input type='hidden' name='array' value=" + beanA.getDa_giorno() + ">"); out.println("<input type='hidden' name='array' value=" + beanA.getA_ora() + ">"); out.println("<input type='hidden' name='array' value=" + beanA.getA_giorno() + ">"); out.println("<input type='hidden' name='array' value=" + beanA.getTipo_assenza() + ">"); out.println("<input type='hidden' name='array' value=" + beanA.getData_dichiarazione() + ">"); int index=i+1; out.println("<td><a href='javascript: submitform("+index+");'><i class='fa fa-download' aria-hidden='true' ></i></a></td>");
codice js
function submitform(i) { $("table[id^='table']").DataTable().destroy(); var oTable = document.getElementById("tableAss"); var oCells = oTable.rows.item(i).cells; var cellLength = oCells.length; var Nome = oCells.item(0).innerHTML; var Da_ora = oCells.item(1).innerHTML; var A_giorno = oCells.item(2).innerHTML; var A_ora = oCells.item(3).innerHTML; var Da_giorno = oCells.item(4).innerHTML; var Tipo_assenza = oCells.item(5).innerHTML; var Data_dichiarazione = oCells.item(6).innerHTML; var myData = { "myData": { "Nome": Nome, "Da_ora": Da_ora, "A_giorno": A_giorno, "A_ora": A_ora, "Da_giorno": Da_giorno, "Tipo": Tipo_assenza, "Data_dichiarazione": Data_dichiarazione } }; $.ajax({ url: "http://localhost:8080/FastNew/ServletDownloadAssenze", type: "get", data: { jsonData: JSON.stringify(myData) }, cache: false, dataType: "json" }); $("table[id^='table']").DataTable(); } $("table[id^='table']").DataTable();
codice della servlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { processRequest(request, response); } catch (ClassNotFoundException ex) { Logger.getLogger(ServletDownloadAssenze.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(ServletDownloadAssenze.class.getName()).log(Level.SEVERE, null, ex); } catch (JSONException ex) { Logger.getLogger(ServletDownloadAssenze.class.getName()).log(Level.SEVERE, null, ex); } } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException, JSONException { response.setContentType("text/html;charset=UTF-8"); JSONObject newObj = new JSONObject(); ; try { // parsing del Json } //chiamata al metodo per generazione e download pdf service(request, response, values); } catch (JSONException e) { e.printStackTrace(); } } public void service(HttpServletRequest request, HttpServletResponse response, String[] values) throws ServletException, IOException, ClassNotFoundException, SQLException { try { Document document = new Document(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfWriter.getInstance(document, baos); //generazione del document document.close(); response.setHeader("Expires", "0"); String fileName = beanAutista.getNome_Completo() + " " + values[5] + " " + values[2] + ".pdf"; response.setHeader("Content-disposition", "attachment;filename=" + fileName); response.setContentType("application/pdf"); response.setContentLength(baos.size()); OutputStream os = response.getOutputStream(); baos.writeTo(os); os.flush(); os.close(); } catch (DocumentException e) { throw new IOException(e.getMessage()); }
aaa