润乾报表参数模板本地保存查询条件功能实现方案
一、需求背景
在日常报表使用过程中,用户经常需要反复输入相同的查询参数进行报表查看。每次打开报表都要重新输入参数,为此,我们需要实现以下功能:
1、在参数模板增加【保存条件】按钮,将当前查询参数保存到本地,下次打开报表时自动加载
2、新增【开启 / 关闭 / 清除本地参数】控制按钮,支持重新加载参数模板。


二、实现原理
核心采用 浏览器 Cookie 存储报表查询参数,通过 Cookie 参数的读写、开关控制,结合 JSP 页面嵌入按钮和 提供的 JS 函数,完成前端交互与参数加载逻辑。
(润乾最新包 (20260520 日期之后的包) 已新增 Cookie 参数读写、功能开关判断工具方法,如有需要的用户可联系技术获取最新 jar 包)
1、存储介质:浏览器 Cookie(本地存储,不占用服务器资源,且不影响其他用户);
2、优先级由参数在 URL 字符串中的拼接顺序决定,后者覆盖前者。
三、JSP 修改
1、加载 Cookie 保存的本地参数
打开 report\web\webapps\demo\reportJsp 目录下的 showReport.jsp 增加以下代码,加载本地 Cookie 存储的参数,同时获取功能开关状态:
//如果当前浏览报表启用过cookie保存参数,此办法将加载cookie保存本地查询参数
param.append(ReportUtils2.getCookieParams (request, report));
boolean cookieEnabled = ReportUtils2.cookieEnabled (request, report);
//cookie保存本地查询参数优先级和ur1参数优先级取决于谁在后面
//此时url参数优先,会覆盖cookie保存值。
2、添加功能控制按钮
同样在 showReport.jsp 中添加以下代码:
<a href="javascript:disableSetCookies()" class="easyui-linkbutton enabledCookie" style="display:<%= cookieEnabled ? "" : "none" %>;vertical-align:middle;padding:0px 8px;">关闭本地参数</a>
<a href="javascript:cleanCookies( form1 )" class="easyui-linkbutton enabledCookie" style="display:<%= cookieEnabled ? "" : "none" %>;vertical-align:middle;padding:0px 8px;">清除本地参数</a>
<a href="javascript:enableSetCookies()" class="easyui-linkbutton disabledCookie" style="display:<%= cookieEnabled ? "none" : "" %>;vertical-align:middle;padding:0px 8px;">开启本地参数</a>
点击下载 showRpeort.jsp 示例文件。
四、报表设计
以 demo 数据源中的员工表为例,通过姓名动态查询员工信息。
1、编辑报表数据集 sql 并设置数据集参数
SELECT * FROM 员工表 where 姓名 = ? or ? is null

2、定义报表参数 arg1,参数类型默认为字符串即可

3、设计报表

报表保存为 1.rpx,且放在 reportFiles 目录下
4、编辑参数模版
增加数据集 SELECT 姓名 FROM 员工表,且设置 C2 的 web 变量名称为 arg1

参数模版保存为 1_arg.rpx,并和 1.rpx 保存在同一目录下。
5、发布即可查看效果。
报表示例下载:
