`
coconut_zhang
  • 浏览: 541867 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Struts2向JasperReport传参数配置

阅读更多

Recently I spent a whole day searching for solutions and experimenting with  solutions for  how to pass additional report parameters  to a Jasper Report from the Struts 2 framework . It took 8 hours because I had to piece together the information that I needed from multiple locations and then I had to experiment and test the solutions in my application .

最近,我花了一整天的时间来寻找和测试如何通过 Struts2向JasperReport传递额外参数的方案。我从多方收集资料,然后在我自己的应用程序里进行测试,为此花了8个小时来拼凑这些信息。

Therefore, I am taking what I have learned and  presenting it here so that others do not have to  a waste a similar amount of time on this in the future.

因此,我把我的解决方法和我所知道的贴出来,以至其他的朋友在这个问题上不会浪费大量的时间。

Step1: Configuring the Struts2 JasperReports Plug-in

The Struts2 JasperReports plug-in makes integrating JasperReports into your application simple and even enjoyable. The following shows how to configure a report using this plug-in .

步骤1:配置Struts2配置文件以支持 JasperReports插件

Struts2的JasperReports插件可以在你的应用程序里制作简单而又有趣的综合报表。下面的代码将向你展示如何配置JasperReports插件与Struts2协同工作

译者注: JasperReports 插件在Struts2的完整压缩包里,包名是 struts2-jasperreports-plugin-2.x.x.jar,将其拷贝到WEB项目工程的CLASSPATH下,即 “WebContent\WEB-INF\lib”下。

Struts关于JasperReport的部分配置XML代码:

  1. <package name="com.olympus.sapg.smtinnovation.action.jasper" extends="jasperreports-default">
  2.      <result-types>
  3.          <result-type name="jasper" class="org.apache.struts2.views.jasperreports.
  4. JasperReportsResult"></result-type>
  5.      </result-types>
  6.  
  7.      <action name="pullMaterielBill" class="com.olympus.sapg.smtinnovation.action.
  8. jasper.PrintPullMaterielBill">
  9.       <result name="success" type="jasper">
  10.           <param name="location">jasper\productionPlan\pullMaterielBill.jasper</param>
  11.           <param name="format">HTML</param>
  12.           <param name="dataSource">pullMaterialList</param>
  13.      </result>
  14.      </action>
  15. </package> 

To pass a Map of additional report parameters to the report you need to include an additional "param name" called "reportParameters" tag within the "result" tag. The value for this tag should be the name of the Map holding the keys and values for the report parameters in your Action, in my case I called the Map "reportParams".

要想通过MAP方法向报表中传递一个额外参数,在 struts.xml文件中的“result”标签中需要添加一个名为“reportParameters”的参数名,标签中参数名就是你在Action 中所设置的值,依我看,我认为这是一个匹配参数的操作。

  1. <package name="com.olympus.sapg.smtinnovation.action.jasper" extends="jasperreports-default">
  2.      <result-types>
  3.          <result-type name="jasper" class="org.apache.struts2.views.jasperreports.
  4. JasperReportsResult"></result-type>
  5.      </result-types>
  6.  
  7.      <action name="pullMaterielBill" class="com.olympus.sapg.smtinnovation.action.
  8. jasper.PrintPullMaterielBill">
  9.      <result name="success" type="jasper">
  10.           <param name="location">jasper\productionPlan\pullMaterielBill.jasper</param>
  11.           <param name="format">HTML</param>
  12.           <param name="dataSource">pullMaterialList</param>
  13.           <param name="reportParameters">Params</param>
  14.          </result>
  15.      </action>
  16. </package> 

Step 2 : Modify the Report Action

Now go to your Action and expose a getter for the Map that you specified in Step 1. After I made my changes the following code was added to my Action to expose that getter.

步骤2:修改报表Action

现在,进入你的Action,为你在步骤1中所期望的 Map数据配置一个getter方法,下面的代码中,将在Action中增加Map的getter方法。

  1. private HashMap Params = new HashMap();
  2. public HashMap getParams() {
  3.      return Params; 
  4. }
  5.  
  6. public List<PullMaterial> getPullMaterialList(){
  7.      List<Criterion> criterionPullMaterial=new ArrayList<Criterion>();
  8.      List<Criterion> criterionPullMaterialBill=new ArrayList<Criterion>();
  9.      List<PullMaterial> pullMaterials = new ArrayList<PullMaterial>();
  10.  
  11.      criterionPullMaterialBill.add(Restrictions.between("billNumber",
  12.                  queryBillNumBegin,
  13.                  queryBillNumEnd));
  14.  
  15.      pullMaterials = pullMaterialService.pullMaterialBillMake(
  16.                      Order.asc("billNumber"),
  17.                      Order.asc("materialNumber"),
  18.                      criterionPullMaterial,
  19.                      criterionPullMaterialBill);
  20.  
  21.      Params.put("name""许亮");
  22.      return pullMaterials; 
  23. }  

Step 3: Use the Parameters in the Report

As you saw in Step 2 I added a parameter to the Map called "sessionName". Next I need to go into my report and modify the report to get this value out of the parameter map and into the report for display. Here is the XML that I added to my report to make the value for this parameter available to body of the report .

步骤3:在报表中使用参数

你也看到了,在步骤2中我增加了一个参数“name” (Params.put("name", "许亮");),接下来,我要进入我的报表,给报表设置一个参数名也为“name”,下面是部分代码:

jxml代码:

  1. <parameter name="reportParams.name" isforprompting="false" class="java.lang.String">
  2. </parameter> 
分享到:
评论

相关推荐

    struts2整合jasperreport

    5. **配置Struts2**:为了让Struts2知道如何处理报表请求,我们需要在Struts2的配置文件(struts.xml)中添加相应的Action配置。 ```xml &lt;!-- struts.xml --&gt; &lt;param name="location"&gt;/path/to/your/report....

    Struts2_JasperReport整合的例子

    Struts2和JasperReport是Java开发中两个重要的框架,它们在企业级应用开发中扮演着关键角色。Struts2是一个强大的MVC框架,用于构建动态、数据驱动的Web应用程序,而JasperReport则是一个开源的报表工具,可以生成...

    struts2+jasperReport+ireport做报表总结

    总之,使用Struts2、JasperReport和iReport开发报表时,要关注数据源配置、中文支持、Struts2与报表之间的交互以及子报表的参数传递。遇到问题时,多参考官方文档、社区资源,结合错误信息进行排查,往往能找到合适...

    整合Struts2+JasperReport Web报表应用示例

    5. 配置 Struts2:在 struts.xml 中配置 Action,指定对应的 Action 方法。 6. 渲染并返回报表:Action 方法中生成报表后,可以通过 StreamingActionResult 或其它方式将其发送回客户端。 这个示例虽然简单,但它...

    struts2利用jasperreport导出excel

    6. **Struts2配置**:在Struts2的配置文件(struts.xml)中,定义一个导出Excel的Action,返回类型设置为流类型(通常为“stream”),并将生成的Excel内容设置到HttpServletResponse的输出流中。 7. **Action实现*...

    Struts2整合JasperReport所需要的jar包

    在整合Struts2和JasperReport时,我们需要一些特定的jar包来确保两者能正确通信和协同工作。这些jar包通常包含了Struts2的核心组件、JasperReport库以及它们的依赖。下面,我们将详细讨论整合过程中可能用到的关键...

    struts2-jasperreport-plugin-adjust2.1

    adjust2.1是adjust2.0的改良; ...2、图形报表HTML格式预览无法...若${rptAlone}取值为N,则为该配置的报表放在一个公共的目录下,此时存在上面提到的覆盖现象,此是默认方式,若采用这种默认方式,无需配置参数rptAlone;

    Struts2AndJasperReport实例

    2. 参数传递:如果报表需要用户输入参数,Struts2 可以通过 ActionForm 或者值栈来接收并传递这些参数到报表生成过程中。 3. 安全性:确保对敏感数据的访问和展示进行适当的安全控制,避免信息泄露。 4. 性能优化:...

    jasperreport的操作步骤

    为了在Struts2中使用JasperReport,需要在 `struts.xml` 文件中进行配置: ```xml &lt;result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult"/&gt; ...

    ireport+struts2实现web开发

    提供的`testIreport`压缩包可能包含了一个简单的Struts2项目,其中已经配置好了IReport报表的生成和展示。下载后,只需导入到IDE中,配置好相关的数据库连接,就可以运行示例,查看如何在Web页面上生成和展示报表。...

    Struts2实现打印功能依赖的jar包

    6. **整合到Struts2**:为了在Struts2中调用这些功能,你需要在struts.xml配置文件中定义Action,指定返回类型为stream,并设置相应的参数,如输出的MIME类型和文件名。 通过以上步骤,你可以利用Struts2和...

    struts2-API.rar

    12. **插件机制**: Struts2具有强大的插件扩展性,例如Freemarker、Tiles、JasperReport等,可以轻松集成到Struts2项目中。 以上只是Struts2框架中的一部分核心概念和API,实际的`struts2-API.chm`文档会包含更多...

    Jasperreport资料

    2. 参数传递:允许用户在运行时动态输入参数,控制报表的生成。 3. 脚本let:使用脚本let可以编写自定义逻辑,增强报表的计算和处理能力。 4. 图表:JasperReport内置丰富的图表库,可以创建柱状图、折线图、饼图...

    jasperreports 3 struts2开发资料

    总的来说,JasperReports和Struts2的结合提供了强大的动态报表生成能力,对于需要向用户展示复杂数据的应用来说,这是一种非常实用的解决方案。通过深入理解和实践"jasperreports 3 struts2开发资料",开发者可以...

    jasperreport初学用例

    在这个初学用例中,我们将探讨如何使用JasperReport与Java和Struts2框架集成,以创建和展示报表。 **1. JasperReport基本概念** JasperReport支持多种数据源,包括数据库、CSV、XML等,可以生成PDF、HTML、Excel等...

    jasperReport学习资料

    2. **Struts2框架**:使用Action的result配置生成报表。 3. **JSF(JavaServer Faces)**:通过FacesContext和ExternalContext与JasperReport交互。 **五、JasperReport高级特性** 1. **表达式(Expressions)**:...

    在struts2中使用JFreeChart

    6. **返回结果**:Struts2的Action完成后,将报表以InputStream或byte[]的形式返回,然后在Struts2的结果类型中配置,如`stream`或`tiles`,以在浏览器上正确显示报表。 7. **视图渲染**:在视图层,可能是一个JSP...

    Struts2+ireport PDF报表

    接着,我们需要在Struts2的配置文件`struts.xml`中进行相应的配置。这包括定义Action类,设置结果类型,并指定生成PDF报表的Action。例如: ```xml &lt;param name="contentType"&gt;application/pdf ...

    jasperreport学习资料(附jasperreport API).

    6. 集成到应用程序:了解如何将JasperReport集成到Spring、Struts等主流Java框架中,以提供报表服务。 7. 报表服务器:JasperServer是JasperReport的商业版本,提供了一套完整的报表服务器解决方案,包括权限管理、...

Global site tag (gtag.js) - Google Analytics