JSF+iReport 报表的展示(一)



最近在做的项目中用到了JSF+iReport生成报表且导出报表的技术.大的技术难点没有什么,但是有很多小的细节很搞人, 下面对整个流程以及注意的地方做个简单的总结:

步骤

(1)下载最新的iReport,且安装(http://community.jaspersoft.com/download)

(2)用iReport设计报表模板(http://community.jaspersoft.com/wiki/designing-report 有个简单的例子,可以作为参考)

(3)将以下包加入WEB-INF/lib中。
commons-beanutils-1.7.jar;commons-collections-2.1.jar;commons-digester-1.7.jar;commons-logging-1.0.2.jar;commons-logging-api-1.0.2.jar;itext-1.3.1.jar;jasperreports-1.3.3.jar;jdt-compiler-3.1.1.jar;jxl-2.6.jar;png-encoder-1.5.jar;poi-2.0-final-20040126.jar
以上包是jasperReport必须。

(4)编写xhtml文件,样例代码如下:

         <h:head>  
            <title>Facelet Title</title>  
        </h:head>  
        <h:body>  
              <h:form>    
                 <h:commandbutton actionlistener="#{demoBean.DOCX}" value="Docx" ajax="false" />
              </h:form>
        </h:body>  
上面的例子中一定要注意的是必须有ajax="false"属性

(5)编写manager bean

 public void DOCX(ActionEvent actionEvent) throws JRException, IOException{    
       HttpServletResponse httpServletResponse=(HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();  
       httpServletResponse.addHeader("Content-disposition", "attachment; filename=report.docx");  
       ServletOutputStream servletOutputStream=httpServletResponse.getOutputStream();  
       JRDocxExporter docxExporter=new JRDocxExporter();  
       docxExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);  
       docxExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, servletOutputStream);  
       docxExporter.exportReport();  
       FacesContext.getCurrentInstance().responseComplete();  
   }  

上面的程序中注意的是 ,最后必须要加上FacesContext.getCurrentInstance().responseComplete(),否则会产生

getOutputStream() has already been called for this response


关于ireport的设计细节可以参考iReport的文档



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值