JSP传参数给Birt的两种方法
来源:互联网 发布:能讲课的软件 编辑:程序博客网 时间:2024/06/05 12:06
关于给报表传值:
如果你不使用birt viewer的话,那就是使用api调你的报表,birt api有设置参数的api.
如果使用birt viewer,直接通过url或者使用birt 标签都是可以的。
本文只是用jsp的url方式传递参数给birt报表,然后在birt的sql语句里面使用:
一、第一个中方法:
1、在jsp的URL里面添加所要传递的参数:
http://localhost:8080/birt-web/frameset?__report=test.rptdesign&sample=my+parameter
2、在报表当中添加同名报表参数sample,然后可以添加da
二、第二种方法:
1、在jsp的URL里面添加所要传递的参数:
http://localhost:8080/birt-web/frameset?__report=test.rptdesign&sample=my+parameter
2、在报表当中添加同名报表参数sampleif(isample=="null"){
this.queryText +="where 1=1" ;
}
else {
this.queryText +=" where sample=" + sample ;
}
1.jsp页面设置几个需要传递参数的文本框
jsp代码
<script type="text/javascript"> function search(){ var st = document.getElementById("st").value;//开始日期 var et = document.getElementById("et").value;//结束日期 window.location.href = "run?__report=reports/new_report.rptdesign&__parameterpage=false&st="+st+"&et="+et; } function print(){ var st = document.getElementById("st").value;//开始日期 var et = document.getElementById("et").value;//结束日期 window.location.href = "frameset?__report=reports/new_report.rptdesign&__parameterpage=false&st="+st+"&et="+et; } </script> </head> <body> <input type="text" name="st" id="st"><br> <input type="text" name="et" id="et"><br> <input type="button" value=" 查 询 " onclick="search()"> <input type="button" value=" 打 印 " onclick="print()"> </body>
(window.location.href = "run?__report=reports/new_report.rptdesign&__parameterpage=false&st="+st+"&et="+et;)
(1)run(只能显示, 没有打印, 分页等功能): 和普通的html页面显示的效果一样,样式需要在报表中设计, 改成frameset则有所有功能
(2)参数:st(起始日期), et(结束日期)
2. rptdesign文件设置
(1).报表参数
Name Data type Display Display As--Format as
st Data Text Box Custom:yyyy-MM-dd
et Data Text Box Custom:yyyy-MM-dd
(2).数据集参数
Name Data Type Direction Defalut Value Linked To Report Paramter
st Date Input N/A st
et Date Input N/A et
(3).数据集sql(时间从 ? 到 ? 的时间段的记录)
select * from tabelName where tbtime betweem ? and ?
原来用URL方式向Birt进行参数传递,发现二个问题
1.需要用urldecode进行二次处理,麻烦;
2.参数长度有限制,恶心。遇到长一点参数就没有办法了;
后来就考虑在script中通过session 参数进行传递
importPackage(Packages.java.io,Packages.java.util,Packages.java.net); importPackage(Packages.javax.servlet.http); request=reportContext.getHttpServlet(); var session = request.getSession(); status = session.getAttribute("whereClause");
结果发现request始终是null,原因是此request不同于javax下的request,其实经过Java处理也是可以实现,但我觉得太烦了。
研究了N久发现了通过
Adding an Object to the Application Context for the Viewer
中利用appcontext的方法传递数据。终于成功简单的处理了Birt web参数传递。而且传递的内容和长度和java一致。
String contextKey = "whereClause"; request.getSession().setAttribute("AppContextKey", contextKey); request.getSession().setAttribute("AppContextValue", sql);
在report中用
beforeOpen中取出即可
如何把java代码中参数传递给报表?在报表中又怎样获取这个参数?
答:通过这种方式给报表传参:
HashMap paramMap = new HashMap();
paramMap.put("birtparam1", 1);
paramMap.put("birtparam2", 5);
task.setParameterValues(paramMap);
设置报表参数与传递的参数同名,这样就关联起来了
数据集参数与报表参数绑定
sql语句中的“?”号对应数据集参数
- JSP传参数给Birt的两种方法
- JSP传参数给Birt的两种方法
- jsp中实现参数隐藏的两种方法
- Birt参数实现日历控件的方法
- JavaWeb从JSP传递给controller参数的两种方式
- JavaWeb从JSP传递给controller参数的两种方式
- 详解java中给方法传递参数的两种方式:按值传递,引用传递
- Jsp 给自身传参数
- Jsp连接MSSQL2000的两种方法
- Jsp连接MSSQL2000的两种方法
- Servlet跳转Jsp的两种方法
- BIRT JSP tag的用法
- C++ 给函数传递参数的两种方式
- C++ 二维数组 两种基本的传参数方法
- dojo小例子(15)给dojo on的事件处理函数传递自定义参数的两种方法
- MyBatis接受参数的两种方法
- Jmeter参数化的两种方法
- ashx获取两种参数的方法
- Design pattern
- Yii 分页方法总结
- Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)
- 利用Curl、socket、file_get_contents POST数据
- javascript typeof 和 instanceof 的区别和联系
- JSP传参数给Birt的两种方法
- Nginx 安装笔记(含PHP支持、虚拟主机、反向代理负载均衡)
- 整数划分
- 全面认识APM和ACPI
- 构建powerpc交叉编译环境
- org.hibernate.hql.ast.QuerySyntaxException: User is not mapped [from User].
- JAVA运行环境搭建及注意事项
- android linearlayout 平分一行
- IAR调试S3C6410的笔记(四)