2013-05-21 1 views
0

저는 struts2 앱을 개발 중이며 브라우저에 생성 된 보고서를 표시하려고합니다. 나는 성공적으로 disk.but에 내 보고서를 생성했습니다.하지만 브라우저에서 보려고합니다. 여기에 몇 가지 코드가 있습니다.브라우저에서 jaspereports를 통해 생성 된 보고서를 표시합니다.

내 index.jsp를

<body> 
<a href="HTML.action">Reporting</a> 
</body> 

내 액션 DataBeanList는 스트리밍보고 모든 수출의

public class DataBeanList extends ActionSupport { 

     public ArrayList<DataBean> getDataBeanList() { 
    ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>(); 

     dataBeanList.add(produce("Manisha", "India")); 
     dataBeanList.add(produce("Dennis Ritchie", "USA")); 
     dataBeanList.add(produce("V.Anand", "India")); 
     dataBeanList.add(produce("Shrinath", "California")); 
     dataBeanList.add(produce("issam", "casa")); 

     return dataBeanList; 
    } 

    /** 
    * This method returns a DataBean object, 
    * with name and country set in it. 
    */ 
    private DataBean produce(String name, String country) { 
     DataBean dataBean = new DataBean(); 
     dataBean.setName(name); 
     dataBean.setCountry(country); 
     return dataBean; 
    } 


public void exporte(){ 

String sourceFileName = "D://Test/workspace/ztest/WebContent/reports/jasper_report_template.jasper"; 
       // + "test/jasper_report_template.jasper"; 
     //D:\Test\workspace\ztest\WebContent\reports 
      String printFileName = null; 
      DataBeanList DataBeanList = new DataBeanList(); 
      ArrayList dataList = DataBeanList.getDataBeanList(); 
      JRBeanCollectionDataSource beanColDataSource = 
      new JRBeanCollectionDataSource(dataList); 

      Map parameters = new HashMap(); 
      try { 
      printFileName = JasperFillManager.fillReportToFile(sourceFileName, 
       parameters, beanColDataSource); 
      if (printFileName != null) { 
       /** 
       * 1- export to PDF 
       */ 
       JasperExportManager.exportReportToPdfFile(printFileName, 
         "D://sample_report.pdf"); 


      } 
      } catch (JRException e) { 
      e.printStackTrace(); 
      } 
     }  
} 
+0

보고서를 내보내고 Struts2'stream' 결과를 사용하십시오. –

+0

@ AleksandrM, 답장을 보내 주셔서 감사합니다.하지만 귀하의 접근 방식을 이해하지 못했습니다. 링크가 있습니다. 내게 설명 할 수 있습니까? – djoStack

+0

정확히 무엇입니까? http://struts.apache.org/development/2.x/docs/stream-result.html을 참조하십시오. –

답변

0

첫째, 그런 일 :

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, 
      parameters, beanDataSource); 
JasperExportManager.exportReportToPdfStream(jasperPrint, out); 

그런 다음에 출력 스트림으로 변환 입력 스트림을 입력하고 액션 내부에서 getter/setter를 사용하여 변수 inputStream에 할당합니다. stream 결과를 사용하도록 조치를 구성하십시오.

<action ...> 
    <result type="stream"> 
    <param name="inputName">inputStream</param> 
    <param name="contentType">application/pdf</param> 
    <param name="contentDisposition">attachment;filename="report.pdf"</param> 
    </result> 
</action> 
관련 문제