程序网络报表中获取request中的值

编辑
文档创建者:印然 (67260 )     浏览次数:4101次     编辑次数:8次     最近更新:星踪 于 2018-05-18     

目录:

1.描述编辑

我们定义的程序网络报表也可以包含参数,Web浏览器访问网络报表时,如何给它传递参数值呢?一般处理是访问网络报表的路径后跟上参数值,当报表参数有几十个甚至更多时,就会以列表、数组等方式传递给程序,如http://localhost:8075/WebReport/ReportServer?Reportlet=com.fr.demo.URLParameterDemo&地区=华北

然后在程序中获得该请求中的参数'地区'的值,赋值给报表参数'地区',展示对应的报表。
我们以读取Parameter.cpt模板,转为带参程序网络报表,然后访问时传递参数为例。

1. 实现原理编辑

1.1 创建程序网络报表
新建类URLParameterDemo,继承com.fr.web.Reportlet抽象类,读取Parameter.cpt模板保存为WorkBook对象,最终返回该WorkBook。
提取Request中保存的参数并传值
1.2 提取Request中的参数

1)获取外部传来的参数

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

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

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

2. 实现步骤编辑

2.1 完整代码如下:
// 程序网络报表中获取request中的值 package com.fr.demo; import java.util.Map; import java.util.logging.Level; import com.fr.base.FRContext; import com.fr.general.ModuleContext; import com.fr.main.TemplateWorkBook; import com.fr.report.module.EngineModule; import com.fr.web.core.Reportlet; import com.fr.web.request.ReportletRequest; import com.fr.io.TemplateWorkBookIO; import com.fr.base.Parameter; import com.fr.dav.LocalEnv; import com.fr.page.stable.ReportPageAttr; @SuppressWarnings("unused") public class URLParameterDemo extends Reportlet { public TemplateWorkBook createReport(ReportletRequest reportletRequest) { String envPath="E:\\FineReport_9.0\\WebReport\\WEB-INF"; FRContext.setCurrentEnv(new LocalEnv(envPath)); ModuleContext.startModule(EngineModule.class.getName()); // 获取外部传来的参数 TemplateWorkBook wbTpl = null; String countryValue = reportletRequest.getParameter("地区").toString(); try { wbTpl = TemplateWorkBookIO.readTemplateWorkBook( FRContext.getCurrentEnv(), "\\doc\\Primary\\Parameter\\Parameter.cpt"); // 提取报表参数组,由于原模板只有country一个参数,因此直接取index为0的参数,并将外部传入的值赋给该参数 Parameter[] ps = wbTpl.getParameters(); ps[0].setValue(countryValue); // 原模板定义有参数界面,参数已经从外部获得,去掉参数页面 // 如果想要参数面板,把下面wbTpl.getReportParameterAttr().setParameterUI(null); 这句去掉就行 wbTpl.getReportParameterAttr().setParameterUI(null); } catch (Exception e) { e.printStackTrace(); return null; } return wbTpl; } @Override public void setParameterMap(Map arg0) { // TODO Auto-generated method stub } @Override public void setTplPath(String arg0) { // TODO Auto-generated method stub } }
2.2 发布并预览
编译源文件,将生成的URLParameterDemo.class类放至应用%FR_HOME%\WebReport\WEB-INF\classes\com\fr\demo下,启动服务器,在浏览器中访问该网络报表,并传递参数值,路径如下http://localhost:8075/WebReport/ReportServer?reportlet=com.fr.demo.URLParameterDemo&地区=华北
便可以看到结果:
222

附件列表


主题: 二次开发
如果您认为本文档还有待完善,请编辑

文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

此页面有帮助吗?