當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

給session賦值實現報表間參數共享

1. 描述

若有幾張不同的報表,每張報表都有一個共同的項可以選擇,比如日期時間。我們希望選擇了第一張報表的時間之後,其他報表的默認時間都變爲第一張報表選擇的時間,此時要如何實現呢?

2. 思路

可以利用給 Session 賦值來實現。給第一張報表的參數控件增加通過 AJAX 的 URL 将值傳遞給後台的 servlet 的編輯後事件,servlet 獲取 AJAX 傳遞的值并将其保存到 Session 中,後面的報表在參數的控件值處通獲取 Session 值即可。

3. 操作步驟

3.1 AJAX 傳值設置

随便打開一張帶參數的模板,如打開模板:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Primary\Parameter\Parameter.cpt

點擊參數界面,将控件設置爲文本控件,給文本控件增加編輯後事件,具體的 JavaScript 代碼如下所示:


var str=this.getValue();    //獲取當前控件的值
FR.ajax({  
   url: "/webroot/session/report?id="+encodeURIComponent(str)  //将值傳遞給 Session 這個 Servlet 中
});

注:如果想要預覽報表的同時将數據也寫入到 Session 中,而不需要異步加載,可以再 AJAX 下面加上 async:false。

詳細設置如下圖所示:
222

3.2 獲取值并保存至 Session

新建一個名爲 Session 的類,具體的代碼詳見:

https://git.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/data/session.java

編譯 session.java 類,将編譯好的 session.class 放置在%FR _HOME%\webapps\webroot\WEB-INF\classes\com\fr\data目錄下。

3.3 配置訪問 Session 賦值的 Servlet

%FR _HOME%\webroot\WEB-INF\下的新建 web.xml,加入如下代碼:



<?xml version="1.0" encoding="UTF-8"?>
<web-app
   xmlns="http://java.sun.com/xml/ns/j2ee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
   version="2.4">

  <display-name>Template WebApp</display-name>
    <mime-mapping>
  <extension>msi</extension>
  <mime-type>application/x-msi</mime-type>
  </mime-mapping>
  <servlet>
    <servlet-name>session</servlet-name>
    <servlet-class>com.fr.data.session</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>session</servlet-name>
    <url-pattern>/session/*</url-pattern>
  </servlet-mapping>
</web-app>
顯示代碼

注:在編寫 Java 類文件的時候,如果是保存在某個具體的包下面,比如說 com/fr/data 下面,那麽除了需要将 class 文件放置在對應位置下之外,web.xml 文件中的 servlet-class 标簽也需要修改,比如說修改爲 com.fr.data.session。

3.4 獲取 Session 值

在另外一個參數模板如%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Primary\Parameter\Parameter1.cpt将數據集中地區參數的默認值華北删除,并且參數控件的控件值中選擇公式并輸入$sessionname(Servlet 中 Session 的名字),如下圖:

222

注:sessionname 是指 Java 類中的 sessionname。

3.5 效果查看

由於内置的設計器的 Tomcat 現在不讀 web.xml,因此需要将工程部署到外置 Tomcat 中。

填報預覽 parameter.cpt,在文本框中輸入中國後,再預覽 parameter1.cpt,可以看到文本框中顯示的是中國了,如下圖所示:


222

附件列表


主題: 原簡體文檔
  • 有幫助
  • 沒幫助
  • 只是瀏覽

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

7s后關閉

反饋已提交

網絡繁忙