FineReport中利用session实现报表参数共享
需积分: 9 141 浏览量
更新于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-11-06 上传
2024-11-06 上传
2024-11-06 上传
xuqian3326
- 粉丝: 5
- 资源: 172
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫