This content has been marked as final.
Show 11 replies
-
1. Re: Requesting doc through servlet on onComplete event probl
nbelaevski Sep 17, 2009 7:53 AM (in response to k85)Hi,
Please post pages/bean code. -
2. Re: Requesting doc through servlet on onComplete event probl
k85 Sep 17, 2009 7:56 AM (in response to k85)Sorry, I fogot it..
package servlets; import net.sf.jasperreports.engine.data.JRBeanArrayDataSource; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.export.JExcelApiExporter; import net.sf.jasperreports.engine.export.JRXlsExporterParameter; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.*; import java.util.HashMap; public class ReportServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { JRBeanArrayDataSource jrBeanArrayDataSource = new JRBeanArrayDataSource(null); JasperReport jasper_report = null; try { try { InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("journal.jrxml"); jasper_report = JasperCompileManager.compileReport(inputStream); } catch (Exception e) { e.printStackTrace(); } ByteArrayOutputStream reportOutputStream = new ByteArrayOutputStream(); JExcelApiExporter xlsExporter = new JExcelApiExporter(); xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, JasperFillManager.fillReport(jasper_report, new HashMap(), jrBeanArrayDataSource)); xlsExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, reportOutputStream); xlsExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE); xlsExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); xlsExporter.exportReport(); byte[] bytes = reportOutputStream.toByteArray(); resp.setContentType("application/vnd.ms-excel"); resp.setHeader("Content-Disposition", "inline"); resp.setHeader("Content-length", "" + bytes.length); BufferedInputStream in = new BufferedInputStream(new ByteArrayInputStream(bytes)); BufferedOutputStream out = new BufferedOutputStream(resp.getOutputStream()); try { byte[] buf = new byte[2048]; while (true) { int actual = in.read(buf); if (actual < 0) break; out.write(buf, 0, actual); } } finally { if (null != in) in.close(); if (null != out) out.close(); } } catch (Exception e) { e.printStackTrace(); } } }
-
3. Re: Requesting doc through servlet on onComplete event probl
nbelaevski Sep 17, 2009 9:16 AM (in response to k85)Please post page code also
-
4. Re: Requesting doc through servlet on onComplete event probl
k85 Sep 17, 2009 9:59 AM (in response to k85)these codes you can see in WAR ;)
<?xml version="1.0" encoding="UTF-8"?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jstl/core" xmlns:f="http://java.sun.com/jsf/core" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich"> <f:view> <a4j:form id="reports_form"> <div> <rich:panel> <a4j:commandLink onclick="Richfaces.showModalPanel('print_report_panel');"> <h:outputText value="REPORT"/> </a4j:commandLink> </rich:panel> </div> </a4j:form> <a4j:include viewId="/pages/report.jspx"/> </f:view> </jsp:root> --------------------- <ui:composition xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jstl/core" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich"> <rich:modalPanel id="print_report_panel" minHeight="200" minWidth="450" zindex="2000" autosized="true"> <script><!-- function report(){ open('/test/Report' + new Date().getSeconds() + '.xls'); return true; } --></script> <f:facet name="header"> <h:outputText value="Reports"/> </f:facet> <f:facet name="controls"> <a href="javascript:Richfaces.hideModalPanel('print_report_panel');">X</a> </f:facet> <a4j:form id="report_param"> <rich:panel> <table width="100%"> </table> <br/> <table width="100%"> <tr> <td align="center"> <h:panelGrid columns="3"> <a4j:commandButton id="btn_click" value="onClick" onclick="report();"/> <a4j:commandButton id="btn_complete" value="onComplete" oncomplete="report();"/> </h:panelGrid> </td> </tr> </table> </rich:panel> </a4j:form> </rich:modalPanel> </ui:composition>
-
5. Re: Requesting doc through servlet on onComplete event probl
nbelaevski Sep 18, 2009 6:11 AM (in response to k85)Hi,
Does this help: http://support.microsoft.com/kb/260519? -
6. Re: Requesting doc through servlet on onComplete event probl
k85 Sep 18, 2009 10:27 AM (in response to k85)Hi,
No... nothing.
I replaced INLINE with:
resp.setHeader("Content-Disposition", "attachment; filename=" + "Report" + System.currentTimeMillis() + ".xls");
This variant(mime) I use with <h:coomandButton action..>. -
7. Re: Requesting doc through servlet on onComplete event probl
nbelaevski Sep 18, 2009 8:44 PM (in response to k85)Looks like some kind of security measure in IE. Try this:
function report(){ location.href = '/test/Report' + new Date().getSeconds() + '.xls'; return true; }
-
8. Re: Requesting doc through servlet on onComplete event probl
k85 Sep 22, 2009 7:27 AM (in response to k85)nothing..
it's only drops error on main page:
description The requested resource (/test/pages/[object]) is not available.
new windows closes as always. -
9. Re: Requesting doc through servlet on onComplete event probl
k85 Sep 22, 2009 7:29 AM (in response to k85)in Opera works... some notice about popup appears, but on click on it gives me a report.
-
10. Re: Requesting doc through servlet on onComplete event probl
k85 Sep 24, 2009 8:56 AM (in response to k85)<a4j:commandButton value="test" oncomplete="$(find('btn')).click();"/> <a4j:commandButton id="btn" style="display:none;" onclick = "report();"/>
Gives the same result. -
11. Re: Requesting doc through servlet on onComplete event probl
k85 Sep 28, 2009 5:46 AM (in response to k85)any more suggestions?