历史版本11 :JS实现报表预览超时自动跳转 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 问题描述

多用户并发一直是服务器部署中头一个关键考虑因素,目前 FineReport 已经提供了相对较好的多用户 Session 控制方案,也提供了 防宕机插件 来控制报表的生命周期。除以上两种方法外,本文提供了一种 JS 控制报表最长预览时间,超时自动退出的方法。

1.2 实现原理

利用 JavaScript 提供的 setTimeout()方法可以进行延时操作,再利用 window.location 来跳转到指定页面,但是如果直接使用强制跳转的话,用户本身登录的会话并没有结束,我们需要用到 Ajax 来进行数据的交互。

2. 示例编辑

2.1 准备 JS 文件

%FR_HOME%\webapps\webroot\help目录下新建一个 logout.js 文件。

点击可下载:logout.js

JavaScript 代码内容为:

setTimeout(function () {
    jQuery.ajax({
        url: "/webroot/decision/logout",//单点登录的报表服务器  
        data: {},
        timeout: 5000,
        success: function (data) {
            window.location = "/webroot/decision/login";
        },
        error: function () {
            alert("error"); // 登录失败(超时或服务器其他错误)
        }
});
 },3600);//最大预览时间(单位:毫秒),设置了 3600 毫秒后退出,可以根据实际需要进行修改

2.2 引用 JS 文件

打开一个模板,点击菜单栏「模板>模板 Web 属性>引用 JavaScript」,引用 logout.js 文件,如下图所示:

注:如果需要设置全局使用此设置,需要在服务器>服务器配置>引用 Javascript 中引用 logout.js,这样服务器中所有的模板都会使用此生命周期控制方案了。

2.3 效果预览

保存模板,点击「分页预览」,经过 3.6 秒后,报表会自动退出,并进入到重新登录「决策平台」的界面,即通过 JavaScript 可以控制模板预览生命周期。如下图所示:

222