反饋已提交
網絡繁忙
我們定義的程式網路報表也可以包含參數,當用 Web 瀏覽器存取網路報表時,如何給它傳遞預設參數值呢?
可以透過 URL 給網路報表傳參,在存取網路報表的路徑後跟上參數值,如http://localhost:8075/webroot/decision/view/report?viewlet=com.fr.demo.URLParameterDemo&地區=華北
當存取報表時,程式就會獲取參數值並指派給對應的參數,展示對應的報表。如下圖所示:
1)建立程式網路報表
建立類 URLParameterDemo,繼承 com.fr.web.Reportlet 抽象類,讀取 範本參數.cpt 範本儲存為 WorkBook 物件,最終傳回該 WorkBook。
2)提取 Request 中儲存的參數並傳值
獲取外部傳來的參數
String countryValue = reportletRequest.getParameter("地區").toString();
提取報表參陣列,由於原範本只有一個參數地區,因此直接取 index 為 0 的參數,並將外部傳入的值賦給該參數
Parameter[] ps = wbTpl.getParameters(); ps[0].setValue(countryValue);
以下範例讀取 範本參數.cpt 範本,轉為帶參程式網路報表,然後存取時傳遞參數。
編譯程式前,需先建立一個 Java 工程環境,並且需要一個 Java 編輯器,如 Eclipse 或 idea 。
在編輯器工程中匯入 FineReport 工程 JAR 包。包括使用者自己報表工程
%FR_HOME%/lib下的所有的包,
%FR_HOME%/server/lib 下的所有包,
%FR_HOME%/webapps/webroot/WEB-INF/lib下的所有包,
還要引入 JDK 下的 tools.jar。詳細操作可參考:編譯Java程式
在編輯器中編寫 Java 程式 URLParameterDemo.java,即讀取內建範本 範本參數.cpt 轉為帶參程式網路報表,實現存取時可以透過 URL 傳參。完整程式碼可參見:
// 程式網路報表中獲取request中的值package com.fr.demo;import java.util.Map;import com.fr.main.TemplateWorkBook;import com.fr.web.core.Reportlet;import com.fr.web.request.ReportletRequest;import com.fr.io.TemplateWorkBookIO;import com.fr.base.Parameter;@SuppressWarnings("unused")public class URLParameterDemo extends Reportlet { public TemplateWorkBook createReport(ReportletRequest reportletRequest) { // 獲取外部傳來的參數 TemplateWorkBook wbTpl = null; String countryValue = reportletRequest.getParameter("地區").toString(); try { wbTpl = TemplateWorkBookIO.readTemplateWorkBook( "//doctw//Primary//Parameter//範本參數.cpt"); // 提取報表參陣列,由於原範本只有country一個參數,因此直接取index為0的參數,並將外部傳入的值賦給該參數 Parameter[] ps = wbTpl.getParameters(); ps[0].setValue(countryValue); // 原範本定義有參數介面,參數已經從外部獲得,去掉參數頁面 // 如果想要參數面板,把下面wbTpl.getReportParameterAttr().setParameterUI(null); 這句去掉就行 wbTpl.getReportParameterAttr().setParameterUI(null); } catch (Exception e) { e.printStackTrace(); return null; } return wbTpl; } @Override public void setParameterMap(Map arg0) { // TODO Auto-generated method stub } @Override public void setTplPath(String arg0) { // TODO Auto-generated method stub }}
Java 程式編寫完成後,在編譯器中編譯 URLParameterDemo.java ,編譯透過後,將會在編譯器對應工程檔案儲存路徑下生成 URLParameterDemo.class 類檔案。如下圖所示:
將編譯後的 URLParameterDemo.class 放到報表工程 %FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\demo目錄下。如下圖所示:
啟動伺服器,在瀏覽器中輸入存取報表工程檔案的路徑,並傳遞參數值。如使用本地設計器工程,啟動後在瀏覽器端輸入http://localhost:8075/webroot/decision/view/report?viewlet=com.fr.demo.URLParameterDemo&地區=華北便可以預覽報表。如下圖所示:
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙