struts2,ireport导出PDF,JasperFillManager.fillReport不通过

zw529864480 2013-03-22 06:36:17
在网上下的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。 哪位兄弟要这样的例子,也可以联系我的。
搞死了,求大神帮忙啦。如果有代码那就谢天谢地谢谢你了。



...全文
1501 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hudibang0205 2015-05-02
  • 打赏
  • 举报
回复
涨知识了。。没用过ireport的路过。。一直用finereport表示没出现过导出问题~
  • 打赏
  • 举报
回复
楼主有示例的Demo代码吗?有的话麻烦发一个,谢谢了。289485420@qq.com 我现在是在iReport里面写的SQL,放到工程里面报表信息出不来
  • 打赏
  • 举报
回复
高版本jar包分的很清晰,不像低版本,相关的都放到一个jar内。还是要多看jar说明。
zw529864480 2013-04-01
  • 打赏
  • 举报
回复
您真厉害,一下子说到关键上面去了,我是少了一个commons-digester-2.0.jar 包。虽然问题解决了不过没有用这种方式,换成其他的方式了。
女雅乱 2013-03-26
  • 打赏
  • 举报
回复
不要死扣代码了,你要看你strut2.0的jar是否支持jasperreports-5.0.1.jar,代码一般不会有问题的,包冲突的概率很大

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧