---------------------------------------- android培训、 java培训 、期待与您交流! -----------------------------------------
解决Struts2整合jasperreport,输出格式为HTML时页面图片无法找到问题,页面有红叉
我用的是jasperreport 4.8
网上找了很多资料,我自己调试了一下,对网上的方法进行了修改,其实只要两步就可以了。(同时还要感谢网上博客,才有我的改进)
第一步:
在web.xml中添加
<servlet>
<servlet-name>JasperReportImageServlet</servlet-name>
<servlet-class>
net.sf.jasperreports.j2ee.servlets.ImageServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JasperReportImageServlet</servlet-name>
<url-pattern>/image.servlet</url-pattern>
</servlet-mapping>
我的servlet映射路径为/image.servlet,加后缀是为了避免和struts2冲突,你也可以不加后缀,修改struts的路径,把无后缀名的去了
第二步:
在需要输出为HTML的action的result下加入
<param name="imageServletUrl"> <![CDATA[/image.servlet?image=]]> </param>
我的完整struts.xml配置如下:
<action name="JSONAction_*" class="com.pbsage.action.JSONArrayAction" method="{1}">
<result name="json" type="jasper">
<!-- location -->
<param name="location">/reports/json.jasper</param>
<param name="dataSource">jsonArray</param>
<param name="format">HTML</param>
<param name="contentDisposition">inline</param>
<param name="imageServletUrl">
<![CDATA[/image.servlet?image=]]><!--要可web.xml下的刚才配置的那个servlet映射路径一样 -->
</param>
</result>
</action>
一点说明:
看了别人的博客,说要把pixel.GIF拷贝到images目录下
还要加上:
<!--
<package name="px" namespace="/image" extends="jasperreports-default"> <action name="pxx"> <result>/images/images_0/pixel.GIF</result> </action> </package> -->
都不需要,我认为jasperreport处理图片的servlet自己会去自己相应的目录找,不加测试OK!!!!!,不知道低版本的需要不需要加?
处理之前: