2016-05-05 79 views
0

我正在創建一個報告並將其發送給客戶端的應用程序。我使用了以下內容:XDocReport,Grails。是什麼觸發servletResponse將它發送到客戶端的數據/文件

這裏是我的代碼:

def OutputStream outputStream = response.getOutputStream(); 

    try { 

     def InputStream inn = new FileInputStream(new File(invoiceExporterService.getTemplatePath(templateName))); 
     def IXDocReport report = XDocReportRegistry.getRegistry().loadReport(inn, TemplateEngineKind.Freemarker); 
     def FieldsMetadata metadata = report.createFieldsMetadata(); 
     metadata.load("invoiceDetails", CustomerInvoiceDetail.class, true); 

     IContext context = report.createContext(); 
     context = invoiceExporterService.prepareDataForExport(context, id); 
     report.process(context, outputStream); 


    } catch (IOException io) { 

     println "**" + io.properties + "**" 
     return false; 
    } catch (XDocReportException xd) { 

     println "**" + xd.properties + "**" 
     return false; 
    } catch (Exception e) { 

     println "**" + e.properties + "**" 
     return false; 
    } 


    def String fileName = DataFormatUtil.formatFileName(invoiceExporterService.getOutputFilename(), "docx"); 
    response.setContentType("application/octet-stream"); 

// response.setContentType( 「應用程序/ vnd.openxmlformats-officedocument.wordprocessingml.document」); println fileName response.setHeader(「Content-Disposition」,「Attachment; Filename = $ {fileName}」); outputStream.flush();

現在的問題是,它不會將文件發送到客戶端。它發送了一些不是我需要的文件。

我的問題是:鑑於上面的代碼

1),有什麼不好?錯誤的原因是什麼? 2)需要執行哪些觸發器或代碼行才能將文件發送到客戶端?

回答

0

古怪,我是能夠使該行之前設定的內容型和配置型我的代碼工作:

def OutputStream outputStream = response.getOutputStream(); 

但儘管如此,問題依然存在。 servletResponse需要執行哪些觸發器/代碼行以將數據發送到客戶端?

相關問題