历史版本20 :程序网络报表中获取参数值 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

我们定义的程序网络报表也可以包含参数,当用 Web 浏览器访问网络报表时,如何给它传递默认参数值呢?

可以通过 URL 给网络报表传参,在访问网络报表的路径后跟上参数值,如http://localhost:8075/webroot/decision/view/report?viewlet=com.fr.demo.URLParameterDemo&地区=华北

当访问报表时,程序就会获取参数值并赋值给对应的参数,展示对应的报表。如下图所示:

1.2 实现原理

1)创建程序网络报表

新建类 URLParameterDemo,继承 com.fr.web.Reportlet 抽象类,读取 Parameter.cpt 模板保存为 WorkBook 对象,最终返回该 WorkBook。

2)提取 Request 中保存的参数并传值

获取外部传来的参数

String countryValue = reportletRequest.getParameter("地区").toString();

提取报表参数组,由于原模板只有一个参数地区,因此直接取 index 为 0 的参数,并将外部传入的值赋给该参数

Parameter[] ps = wbTpl.getParameters();    
ps[0].setValue(countryValue);

2. 示例编辑

以下示例读取 Parameter.cpt 模板,转为带参程序网络报表,然后访问时传递参数。

2.1 准备编译环境

编译程序前,需先创建一个 Java 工程环境,并且需要一个 Java 编辑器,如 Eclipse 或 idea 。

在编辑器工程中导入 FineReport 工程 JAR 包。包括用户自己报表工程

%FR_HOME%/lib下的所有的包,

%FR_HOME%/server/lib 下的所有包,

%FR_HOME%/webapps/webroot/WEB-INF/lib下的所有包,

还要引入 JDK 下的 tools.jar。详细操作可参考:编译Java程序 

2.2 定义程序网络报表

2.2.1 编写 Java 程序

在编辑器中编写 Java 程序  URLParameterDemo.java,即读取内置模板 Parameter.cpt 转为带参程序网络报表,实现访问时可以通过 URL 传参。完整代码可参见:

https://git.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/demo/URLParameterDemo.java

2.2.2 编译 Java 文件

Java 程序编写完成后,在编译器中编译 URLParameterDemo.java ,编译通过后,将会在编译器对应工程文件存储路径下生成 URLParameterDemo.class 类文件。如下图所示:

2.3 发布并在 Web 端预览 

将编译后的 URLParameterDemo.class 放到报表工程 %FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\demo目录下。如下图所示:

启动服务器,在浏览器中输入访问报表工程文件的路径,并传递参数值。如使用本地设计器工程,启动后在浏览器端输入http://localhost:8075/webroot/decision/view/report?viewlet=com.fr.demo.URLParameterDemo&地区=华北便可以预览报表。如下图所示:

222