FineReport中利用session实现报表参数共享
需积分: 9 79 浏览量
更新于2024-09-11
收藏 483KB PDF 举报
"在报表开发中,为了实现报表间参数的共享,特别是在FineReport这样的报表工具中,我们经常需要在用户选择一个报表的参数后,让其他报表自动使用该参数作为默认值。这种功能可以通过在报表中给session赋值来实现。"
1. 问题背景与需求
当设计多张具有相同或相似参数(如日期时间)的报表时,用户在查看第一张报表并设定特定参数后,希望后续查看的报表能够自动应用相同的参数,以减少重复操作和提高用户体验。这就需要一种方法能够在报表之间传递和共享参数。
2. 实现原理
利用HTTP session的技术,可以在用户选择参数后将其存储在服务器端,后续报表在加载时可以从session中获取这个参数。session是服务器端用来存储用户会话信息的一种机制,对于同一个会话的所有请求,都可以访问到存储在session中的数据。
3. 实现步骤
- **步骤1:Ajax传值**
首先,在第一张报表的参数控件(例如文本框)上设置编辑后事件,通过JavaScript的Ajax函数将选中的值(如日期时间)编码并发送到服务器端的特定servlet。这里的Ajax请求可以配置成异步或同步,根据实际需求决定是否需要等待数据写入session后再继续报表加载。
- **步骤2:Servlet处理**
在服务器端创建一个新的servlet,接收来自Ajax请求的数据。该servlet需要解析请求中的参数值,并将其存储到session中。例如,创建一个名为`SessionServlet`的类,继承自`HttpServlet`,并实现`doPost`方法来处理请求。在这个方法里,通过`HttpSession`接口获取或设置session属性。
4. 代码示例
- **Ajax设置**:
```javascript
var str = this.getValue(); // 获取当前控件的值
FR.ajax({
url: "servlet/session?id=" + FR.cjkEncode(str), // 将值传递给session
});
```
- **Servlet处理**:
```java
import javax.servlet.http.HttpSession;
...
public class SessionServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id"); // 获取请求参数
HttpSession session = request.getSession();
session.setAttribute("selectedTime", id); // 存储到session
// 可以返回确认信息或处理其他逻辑
}
}
```
5. 后续报表获取参数
当用户打开其他报表时,其参数界面的控件可以预先从session中读取并设置值。这通常在报表加载时或参数初始化时进行,通过查询session中的相应键(如`selectedTime`)获取并设置参数值。
6. 注意事项
- 考虑到安全性,确保只允许预期的数据类型和值被存入session。
- 由于session是基于cookie的,因此必须确保用户的浏览器支持并启用了cookie。
- 如果报表数量较大或参数更新频繁,要考虑session内存占用和管理,适时清理不再使用的session数据。
通过以上步骤,就可以在FineReport或其他类似的报表系统中实现报表间参数的共享,提升用户在浏览多张报表时的交互体验。
2015-09-29 上传
点击了解资源详情
点击了解资源详情
2024-12-26 上传
2024-12-26 上传
xuqian3326
- 粉丝: 5
- 资源: 172
最新资源
- convex optimization book-stephen boyd
- 项目说明书 毕业设计 很有用处
- 软件工程项目说明书 毕业设计
- 计算机专业毕业设计题目
- Cheat Sheet of Javascript
- Cheat Sheet of CSS
- js 总结 spring
- 并行计算mpi,集群服务器
- A Guide to MATLAB for Beginners and Experienced Users
- struts2经典教程
- aspV脸孔 在 有枯辰IV购买车
- 信息发布系统设计与实现
- 基于Linux的电源管理技术的实现方法
- ARM9基础实验教程
- JSP 标准标记库(JSTL)官方帮助手册
- 微软关于云计算的探索