
FineReport中利用session实现报表参数共享
下载需积分: 9 | 483KB |
更新于2024-09-11
| 2 浏览量 | 举报
收藏
"在报表开发中,为了实现报表间参数的共享,特别是在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或其他类似的报表系统中实现报表间参数的共享,提升用户在浏览多张报表时的交互体验。
相关推荐






xuqian3326
- 粉丝: 5
最新资源
- DELPHI实现串口通信:直接调用API操作
- ASP技术开发网上求职招聘平台
- ARM嵌入式系统开发与程序移植核心要点
- 深入解析:珍贵的驱动监视代码
- 新手必学 .NET三层架构设计案例教程
- Java EE 5.0 API文档:EJB开发者必备
- SNS利器更新--修复邮箱通讯录获取问题
- FPGA中UART设计流程与文件结构解析
- 深入了解EDA-Verilog HDL在硬件设计中的应用
- VC远程控制源代码实现稳定框架解析
- C#数据库分层模型开发实战教程
- VC.net实现斗地主游戏源代码下载指南
- 51单片机中文拼音输入法C源程序分享
- BCB6环境下多线程计数器的同步实现与冲突分析
- Ajax基础实现教程详解
- ASP+SQL图书管理系统的设计与实现
- 深入理解USB协议——USB PHY原代码解析
- VB定时关机功能实现与源码分享
- Crypto++ 5.5.2版本加密算法详细解析
- 全面解析PBOC2.0规范:应用、安全、卡片与通用部分
- Google拼音输入法体验:与搜狗相似,易用性高
- 基于C# Winform的XML同学录管理系统
- VB仿Vista风格Aero控件套件更新发布
- PsTools-2.3.4版本发布:系统管理者的高效工具包