首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

struts2,ireport导出PDF,JasperFillManager.fillReport不通过解决方案

2013-04-09 
struts2,ireport导出PDF,JasperFillManager.fillReport不通过在网上下的struts2 和 ireport 的demo 可以跑

struts2,ireport导出PDF,JasperFillManager.fillReport不通过
在网上下的struts2 和 ireport 的demo 可以跑起来。demo上面的例子一般是ireport 4.*  或者 3.*。
我现在要用的版本是5.0.1。 用这个版本主要是因为可以用ireport 里面的html 组件。
首先是用其中的一种方式,code如下:
                           public void export2word() {
/* 1 */String sourceFileName=ResponseUtil.getRequest( ).getSession().getServletContext().getRealPath("/jaspers/ListIReport.jasper");
/* 2 */JasperPrint jasperPrint=JasperFillManager.fillReport(sourceFileName,    new HashMap(), getDs());                                 System.out.println("22222222222222")
/* 3 */JRPdfExporter pdfExporter=new JRPdfExporter();
/* 4 */ResponseUtil.getResponse( ).addHeader("Content-Disposition", "attachment;Filename="+  java.net.URLEncoder.encode(outfileName, "UTF-8")+".pdf");
/* 5 */pdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ResponseUtil.getResponse( ).getOutputStream());
/* 6 */pdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
/* 7 */JasperExportManager.exportReportToPdf(jasperPrint);
/* 8 */pdfExporter.exportReport();
/* 9 */ResponseUtil.getResponse( ).setContentType("application/pdf");
} catch (JRException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
}
getDs方法:
private JRBeanCollectionDataSource getDs(){
List list=new ArrayList();
for(int i=0;i<10;i++){
list.add(new MyJavaBean(i+1, "<div>dddddd<br/><br/><br/><table><tr><td>求大神指点</td></tr></table></div>"));
}
JRBeanCollectionDataSource ds=new JRBeanCollectionDataSource(list);
return ds;
}

在原来的demo上面是可以跑通的。在demo上然后把jasperreport对应的包换成了jasperreports-5.0.1.jar,添加了一个jasperreports-htmlcomponent-5.0.1.jar(用于支持html组件,可以解析html标签)。之后还是可以跑通,html标签可以正常解析。
把对应的代码原封不动的拿到自己项目之后,在/* 2 */ JasperFillManager.fillReport方法 就运行不下去了。    我们项目用的是struts2-2.3.1.2里面的jar包,主要有xwork-core-2.3.1.2.jar    struts2-jasperreports-plugin-2.3.1.2.jar    struts2-core-2.3.1.2.jar三个jar包。执行到/* 2 */ JasperFillManager.fillReport方法 不报错,但是后面的22222222不打印出来。


上面的那个走不通之后,用另外的一个demo。对应的struts.xml配置是  <package name="ireport" extends="struts-default,jasperreports-default">,没有任何提示,正常。
我们现在项目是用的struts 2.3.1.2 的版本。用现在项目的xwork-core-2.3.1.2.jar    struts2-jasperreports-plugin-2.3.1.2.jar    struts2-core-2.3.1.2.jar这三个jar包把demo 中的jar包替换之后就,<package name="ireport" extends="struts-default,jasperreports-default">, 就报出警告,说引用了一个未定义的jasperreports。然后启动报错。

哪位大神有办法或者思路的话麻烦指点哈。如果有对应的代码的例子,方便的话麻烦发给我邮箱 529864480@qq.com。  哪位兄弟要这样的例子,也可以联系我的。
搞死了,求大神帮忙啦。如果有代码那就谢天谢地谢谢你了。



struts2???? ireport jasperreport
------解决方案--------------------


不要死扣代码了,你要看你strut2.0的jar是否支持jasperreports-5.0.1.jar,代码一般不会有问题的,包冲突的概率很大
[解决办法]
高版本jar包分的很清晰,不像低版本,相关的都放到一个jar内。还是要多看jar说明。

热点排行