2015-01-07 94 views
0

如何以彈出窗口的形式顯示打印預覽頁面?使用ADF的Jasper報告打印預覽頁面

我試着從網上的代碼,但它把我帶到另一個頁面。

  HttpServletResponse response = getResponse(); 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     response.setHeader("Cache-Control", "max-age=0"); 
     response.setContentType("application/pdf"); 

     ServletContext context = getContext(); 
     InputStream reportStream = context.getResourceAsStream("report-templates/TestReport.jasper"); 

     if (reportStream == null) { 
      throw new NullPointerException("Input stream is null"); 
     } 

     JasperReport jasperTemplate = (JasperReport)JRLoader.loadObject(reportStream); 
     jasperTemplate.setWhenNoDataType(WhenNoDataTypeEnum.ALL_SECTIONS_NO_DETAIL); 
     Connection conn = getConnection(); 
     JasperPrint print = JasperFillManager.fillReport(jasperTemplate, record,conn); 

     JasperExportManager.exportReportToPdfStream(print, baos); 

     response.setContentLength(baos.size()); 
     baos.writeTo(response.getOutputStream()); 
     baos.close(); 
     response.getOutputStream().flush(); 
     FacesContext.getCurrentInstance().responseComplete(); 

我在這裏做了什麼改變?

回答

1

下面是做到這一點的一種方法:

創建應用程序中的一個servlet,並在其doGet方法編寫代碼。在你的頁面上添加一個彈出組件。從您用來執行代碼的按鈕/鏈接打開此彈出窗口。 在poup窗口中使用inlineFram調用servlet。

<af:popup id="popupReport" animate="default" 
      contentDelivery="lazyUncached"> 
    <af:panelWindow id="pw1" modal="true" title="Sample Report" 
        contentHeight="625" contentWidth="700" resize="on"> 
     <af:inlineFrame id="if1" shortDesc="Report inline frame" 
         source="/showreportservlet" 
         syleClass="AFStretchWidth" 
         inlineStyle="height:500px;"> 
     </af:inlineFrame> 
</af:panelWindow> 

假設/showreportservlet指定URL模式在創建小服務程序

相關問題