struts2 + jasperreport

0001出现以下异常
java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException
解决办法:
引入 groovy-all.jar包问题解决。

0002出现以下异常
java.lang.VerifyError: (class: groovy/runtime/metaclass/java/util/HashMapMetaClass, method: super$2$invokeMethod signature: (Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;ZZ)Ljava/lang/Object;) Illegal use of nonvirtual function call
解决办法:struts-lib.jar版本过低,使用高些的版本(网上查查)重新导入即可。
问题0003:
struts2 + jasperreport,在网页显示成HTML格式时,有小红叉;
解决办法:(注:引自 http://xiaomage9498-126-com.iteye.com/)
Struts2和jasperReport整合时,在生成html形式的报表时,页面没有显示土图片,只有一个个的红叉,jasperReport在生成html形式的报表时,空白的地方是用图片填充的。首先需要在web(IDE:eclipse)目录下新建一个images文件夹,然后到jasperReports.jar中找一个图片文件,路径:net.sf.jasperreports.engine.images.pixel.GIF,把这个图片copy到images文件夹下,并重命名为px.gif。这样还不行,继续,在struts的配置文件中(struts.xml)写上这么一段:
<package name="px" namespace="/images" extends="struts-default">
         <action name="px">
                 <result>/images/px.gif</result>
   </action>
</package>
否则后台会抛出异常,提示找不到名为px的action。
在生成html形式的报表的代码中设置一个参数:
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "/servlets/image?image=");
如果浏览器发生图片缓存,还应加上一句:
exporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
最后一步,不要忘了在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>/servlets/image</url-pattern>
</servlet-mapping>

你可能感兴趣的:(java)