很多人遇到过jasperReport生成的图片会在IE下缓存,多个报表都成了同一个图片.
网上有很多是从jasperReport的编译方式入手,也可以解决.但是我这里要说的是跟Struts2整合后的解决办法,一种更简单的办法
原来我们在做报表的时候:
<result name="success" type="result">
<param name="location">/jasper/regUseLine.jasper</param>
<param name="format">HTML</param>
<param name="reportParameters">reportParameter</param>
<param name="dataSource">chardatabean</param>
<param name="imageServletUrl">/servlets/image?image=</param>
</result>
struts.xml中给Action配置一个result,其中有个属性叫imageServletUrl,解决办法就是给这个请求路径加一个时间戳.
第一步,先写一个Struts2的Result,可以继承JasperReportsResult,然后覆盖里面的属性值,加一个时间戳参数.如此就解决IE下的缓存了.
package report.common.result;
import java.util.Date;
import org.apache.struts2.views.jasperreports.JasperReportsResult;
import com.opensymphony.xwork2.ActionInvocation;
@SuppressWarnings("serial")
public class JsperReportResult extends JasperReportsResult {
@Override
public String getImageServletUrl(){
String[] url = this.imageServletUrl.split("\\?");
StringBuffer t = new StringBuffer("");
t.append(url[0]+("?_t="+(new Date()).getTime())).append("&"+url[1]);
return t.toString();
}
@Override
protected void doExecute(String finalLocation, ActionInvocation invocation)
throws Exception {
this.imageServletUrl = this.getImageServletUrl();
super.doExecute(finalLocation, invocation);
}
}
第二部,修改你的struts.xml,
<package name="jasperReport" extends="struts-default,jasperreports-default">
<result-types>
<result-type name="jasperResult" class="report.common.result.JsperReportResult"></result-type>
</result-types>
<action name="HTML" class="report.actions.jsperreport.ChardataAction">
<result name="success" type="jasperResult">
<param name="location">/jasper/regUseLine.jasper</param>
<param name="format">HTML</param>
<param name="reportParameters">reportParameter</param>
<param name="dataSource">chardatabean</param>
<param name="imageServletUrl">/servlets/image?image=</param>
</result>
</action>
</package>
注意,将你的返回类型改为你配置的result-type,我这里名字叫jasperResult
分享到:
相关推荐
在本文中,我们将深入探讨如何整合Struts2框架与JasperReport3来创建动态报表,并利用iReport工具进行报表设计。Struts2是一个流行的Java Web应用程序框架,它提供了MVC(模型-视图-控制器)架构,而JasperReport则...
在整合Struts2和JasperReport时,我们需要一些特定的jar包来确保两者能正确通信和协同工作。这些jar包通常包含了Struts2的核心组件、JasperReport库以及它们的依赖。下面,我们将详细讨论整合过程中可能用到的关键...
Struts2和JasperReport的整合是Web应用程序中创建动态报表的一种常见方法。JasperReport是一个功能强大的开源报表引擎,允许开发人员通过iReports这样的设计工具以可视化的形式创建复杂的报表模板。Struts2,作为一...
Struts2.1和JasperReport的整合是Java Web开发中的一个重要话题,它涉及到Web应用程序的MVC(模型-视图-控制器)架构和数据报告的生成。Struts2.1是一个强大的MVC框架,而JasperReport则是一个用于创建复杂报表的...
Struts2和JasperReport是Java开发中两个重要的框架,它们在企业级应用开发中扮演着关键角色。Struts2是一个强大的MVC框架,用于构建动态、...通过掌握这种整合方法,开发者可以提高工作效率,提升应用程序的用户体验。
ssh三大框架简单整合,struts2整合JasperReport报表,解决HTML显示图片不出来,PDF中文不显示的问题 网上找答案,乱七八糟的!我研究了几天,终于彻底搞明白了!代码里有些注释,有凝问的可以留言。。。。。。 ...
2. 配置Struts2:在struts.xml中定义Action,指定处理报表请求的方法。 3. 实现Action:在Action中,加载数据源,执行SQL,将结果集转换为JRDataSource。 4. 填充报表:使用JasperFillManager填充报表并导出为所需的...
总结来说,这个项目通过Struts2作为控制器处理用户请求,iReport用于设计报表模板,JasperReport负责生成报表,而Highcharts Export Server则提供了额外的图表导出能力。这种组合提供了一套完整的报表系统,可以满足...
Struts2 和 JasperReport 的整合是为了解决在 Web 应用中生成复杂报表的需求。JasperReport 是一个强大的开源报表引擎,它允许开发者通过设计模板来生成各种类型的报表,如 PDF、HTML、Excel 等。而 Struts2 是一个...
在将Struts2与JasperReport整合时,首先需要在Struts2项目中添加JasperReport的依赖库,这通常包括jasperreports、jcommon、jfreechart等。接下来,我们需要创建一个Action类,该类将负责处理报表生成的请求,并调用...
4. **整合Struts2**:创建一个Struts2 Action,这个Action负责生成报表。在Action中调用上述步骤生成报表实例,然后将其设置为Action的一个属性,以便传递到视图。 5. **配置结果类型**:在struts.xml中,为这个...
在这个场景下,`Maven`、`Struts2`、`JasperReport` 和 `iReport` 是四个关键的技术组件,它们共同作用于创建一个强大的、数据驱动的Web应用程序。下面将详细介绍这些技术及其整合过程。 首先,`Maven` 是一个项目...
解决方法是在`struts.xml`中添加 `<constant name="struts.action.extension" value="action" />`,以确保Struts2能正确解析请求。此外,可以将px文件从ireport安装目录复制到项目相应的目录,或者通过在iReport中...
Struts2是一个流行的Java Web应用程序框架,用于构建...总的来说,这些库文件构成了Struts2集成JasperReport的基础,使得开发者可以在Web应用中轻松地创建和展现丰富的报表,同时利用Struts2的强大功能进行交互和控制。
官方发布的 struts2-jasperreport-plugin-2.1.6存在以下问题: 1、普通报表HTML、Excel格式浏览存在px图片无法显示; 2、解决问题:图形报表一次请求返回多张时存在报表覆盖异常现象; 3、支持数据源单一(改造后支持...
Struts2是一个强大的MVC(模型-视图-控制器)框架,它被广泛应用于Java Web开发中,提供了灵活的控制层来处理用户请求并管理业务逻辑。而JasperReport则是一个开源的报告生成库,能够生成PDF、Excel、HTML等多种格式...
struts2 jasperreport