1. 概述
Session 儲存了 key-value 屬性對,希望在報表中拿到 Session 中的 key 的值。本文總結了主要的應用場景以及實現思路。
2. 直接在報表範本中獲取 Session 中的值
報表應用整合到使用者系統中,共用同一個 Session,此時可以直接在報表中獲取 Session 的值。
如 Session 中儲存了 key a,其值為 123,那麼在我們報表中使用 =$a 就能直接獲取到 Session 中 a 的值。
3. 網頁中先獲取 Session 中的值再傳給 iframe 中的報表
3.1 實現思路
以 JSP 為例,可以透過 session.getAttribute(String key) 獲取 Session 中 key 的值,嫁接在 JSP 中嵌入報表 iframe 的 src 後。
3.2 範例
在使用者系統中透過 session.setAttribute(String key,Object value); 在 Session 中儲存了資訊如 fine_username=Anna,
在 JSP 中透過session.getAttribute("fine_username"),獲得 fine_username,再傳給報表,代碼範例如下:
報表範本中就可以獲取該 fine_username 的值,如下圖:
效果如下:
注:JSP 檔案只能由伺服器來解析。
4. 在JavaScript中獲取session中的值
4.1 實現思路
Session 是後臺伺服器端的變數,而 JS 是前端腳本,在 JS 中是沒有現成的方法獲取 Session 的值的,需要透過伺服器語言來獲取。
比如java就可以用來獲取 Session 的值,再指派給 JS 變數。
以 JSP 為例,透過:
注:Java 代碼用單引號引起來,Java 中字串變數用雙引號
4.2 範例
我們可以做一個 JSP 簡單的頁面顯示 Session 的值:先將 Session 值置為 Imsession,然後顯示。
呼叫 JSP 代碼來運作:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>自訂瀏覽頁面</title>
<script type="text/javascript">
function x(){
<%session.setAttribute("id","Imsession");%>
var id = '<%=session.getAttribute("id")%>';
alert("session是" id);
} </script>
</head>
<body>
<input type ="button" onClick="javascript:x();" value="session">
</body>
</html>
5. 在JavaScript中獲取sessionID
普通報表和決策報表獲取 SessionID 的方法:
FR.SessionMgr.getSessionID();
FVS 視覺化看板獲取 SessionID 的方法:
duchamp.SessionMgr.getSessionID();