1. 描述
Session 保存了 key-value 屬性對,希望在報表中拿到 Session 中的 key 的值。
2. 情形 1:
直接在報表模板中獲取 Session 中的值
2.1 思路
報表應用集成到用戶系統中,共用同一個 Session,此時可以直接在報表中獲取 Session 的值。
如 Session 中保存了 key a,其值爲 123,那麽在我們報表中使用=$a就能直接獲取到 Session 中 a 的值。
3. 情形 2:
網頁中先獲取 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,再傳給報表,代碼示例如下:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <html> <body> <iframe width=100% height=100% src='/webroot/decision/view/report?viewlet=getkey.cpt&country=<%=session.getAttribute("fine_username")%>'> </iframe> </body> </html>
報表模板中就可以獲取該 fine_username 的值,如下圖:
效果如下:
注:JSP 文件只能由服務器來解析。
4. 情形 3:在 JS 中獲取 Session
普通的 cpt 模板,JS 獲取 Session 方法爲:
contentPane.currentSessionID
注:如果 FineReport 報表嵌入到 HTML 頁面的 iframe 中,那麽可通過document.getElementById('reportFrame').contentWindow.contentPane.currentSessionID 來獲取 Session
決策報表模板,JS 獲取 Session 的方法爲:
_g().sessionID