反饋已提交
網絡繁忙
本文主要提供了程式資料源在使用中遇到的問題以及解決方案。
原因分析:
沒有做初始化只執行一次的判斷
解決方案:
因為 getValueAt() 方法裏面呼叫了 init() 方法導致執行次數太多後台卡住預覽不了資料,正確修改如下:
public void init() { // 確定只被執行一次 if (valueList != null) { return; }
獲取參數的API位置寫錯,未放到 int 初始化中
一般包含從資料源讀取資料,及後續的處理–從各種類型轉換成二維陣列,在 getRowCount() 和 getValueAt() 方法中被呼叫以獲取行數和值。例如:
public void init() { // 確定只被執行一次 if (valueList != null) { return; // 獲取參數 String parameter0 = ((ParameterProvider) (parameters.get().toArray())[0]).getValue().toString(); }
程式運作時用到 tools 包,程式運作找不到此包
在 FineReport_11.0\lib 和 FineReport_11.0\webapps\webroot\WEB-INF\lib 底下都put 命令 tools 包。
資料庫編碼與設計器編碼不一致導致(優先保證程式碼單獨執行可以正常取數)
方案一:修改設計器的編碼,修改設計器啟動參數,在 %FR_HOME%bin\designer.vmoptions 檔案中新增參數:-Dfile.encoding=UTF-8
方案二:修改資料連結的編碼
問題描述:
程式資料集遠端設計時,設定參數儲存後不顯示或取不出資料。
明顯的缺少jar依賴包: httpclient
參考 Eclipse中啟動設計器 匯入所有的 jar 包。
啟動工程,catalina.out列印出報錯Could not initialize class com.fr.web.Oldweblet,範本顯示空白。
版本升級或者版本不一致導致無法初始化類。
對於不同版本的FRAPI是有所變化的,修改對應程式碼重新編譯即可。
參數重新整理不出來或者報錯 java.lang.IllegalArgumentException:Illegal character in path at index
1)因為程式資料集class裏自己定義了參數, 跟介面衝突, 出於相容原因, 優先選擇使用class裏設定的:。
2)遠端設計情況下本地沒有對應程式資料集。
1)刪掉程式資料集class裏的參數, 直接用介面上的. 程式碼中不去setParameter, 直接getParameter即可. (程式資料集介面參數需要手動新增,無法自動識別)
2)本地和伺服器上都要放class檔案。
Object[] paramArray = parameters.get().toArray();透過這種方式獲取參數,是個空陣列,結果獲取不到程式資料集裏傳入的參數
程式資料集獲取不到參數,編寫錯誤。
把獲取參數的API寫到int初始化中。
程式資料源逾時或者資料為空的時候,會控制台反覆呼叫,導致資料庫崩掉。
定義靜態變數並對每個方法做判斷初始化
設計器端一般報錯為:java.lang.reflect.UndeclaredThrowableException
設計器fanruan.log日誌裏面報錯:Caused by: java.io.NotSerializableException
程式資料集類的屬性存在不可序列化的屬性
一般是直接把不可序列化的屬性去掉,在取數方法裏面生成,或者加 transient修飾,被 transient 修飾的屬性代表不參與序列化,或者將屬性更換成可序列化的屬性。
程式資料集預覽報錯:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
程式資料集取數時手動新增的參數,
如果多於程式碼裏面使用的參數則正常
如果少於程式碼裏面使用的參數則會報錯陣列越界
程式資料集建立的參數數量應跟程式碼裏定義的參數一致
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙