智能報表工具中模板名有中文找不到模板問題

當預覽某張報表(報表模板名稱命名為中文)時,在瀏覽器中直接輸入url訪問該報表時可能會出現報錯,但是從設計器中直接點擊分頁預覽等,卻不會出現問題,下面就通過智能報表工具FineReport來簡單介紹一下。

工具/原料

智能報表工具FineReport7.1.1
大小:148.2M 適用平台:windows/linux

方法/步驟

比如在URL中輸入訪問某張報表,如http://localhost:8080/WebReport/ReportServer?reportlet=參數.cpt ,就會報如下錯誤信息:

問題原因

因為每個瀏覽器的編碼是不一樣的,所以要通過設置伺服器端的url編碼,來實現伺服器的編碼和瀏覽器的編碼一致。

為什麼這樣的中文模板,在設計器中點擊分頁預覽等,卻不會出現如上的問題。

原因是設計器中的分頁預覽那邊是FR的設計器封裝的代碼中通過cjkEncode方式解析處理了中文,你會看到設計器中訪問的中文命名的模板(參數.cpt)變為[4f20][53c2].cpt,即已經處理其中的中文名稱,正常預覽模板的效果,如下:

解決方案

直接在瀏覽器中輸入

修改web伺服器下面的server.xml配置文件,在Connector屬性裡面添加:URIEncoding="GB2312"或是URIEncoding="utf-8",其中GB2312對應IE和火狐瀏覽器,utf-8對應谷歌瀏覽器,設置完就可以直接通過URL輸入訪問中文名的模板和傳遞中文參數。

下面以tomcat為例,可以通過修改conf下的server.xml文件實現URL中的中文傳參,在server.xml下找到如下代碼:Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"中加入URIEncoding="GB2312",成功tomcat伺服器,通過url訪問中文模板就可以成功訪問到了。其它的伺服器的解決方案類似,只要在對應的地方加上url編碼。

集成到項目中

使用FR.cjkEncode("中文名稱")方式進行轉換就可以解決。

註:用戶集成到自己的系統後,都是講報表嵌入在系統頁面中的,而不是直接在瀏覽器欄輸入,以上情況只發生在未集成測試之時。

原作者:FineReport

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場