反饋已提交
網絡繁忙
一些特殊的業務邏輯用公式校驗不好實現,希望可以獲取填報頁面資料,交給使用者自訂的程式來判斷,最後將校驗結果傳回給頁面展示。
設計器菜單欄點選「範本>報表填報屬性」,設定介面選擇「資料校驗」,點選,選擇「自訂校驗」即可,如下圖所示:
1)自訂校驗的本質是獲取頁面資料後做自訂的處理,最後將校驗結果傳回,所以處理資料的程式碼部分需要使用者自己根據業務需求編寫。
2)只支援傳回校驗結果給頁面展示,不支援其他回呼需求。
3)自訂校驗支援在行動端使用。
建立資料集 ds1,從 FRDemo 取數,SQL 語句為:SELECT * FROM S產品 limit 3
設計填報表格,將資料集相應欄位拖到儲存格中,C2 儲存格新增「正文元件」,表格樣式如下圖所示:
本範例要實現的效果是:當單價小於設定的最小值時,彈出校驗提醒。
參考以下程式碼可獲取相應的範本資料,進行判斷並傳回校驗結果。
package com.fr.data;import com.fr.base.Utils;import com.fr.log.FineLoggerFactory;import com.fr.script.Calculator;public class VerifyDemo extends DefinedVerifyJob { /** * 必須要定義此私有變數,變數名可改,表示校驗狀態,預設為0 * 0 表示校驗成功 * 1 表示校驗失敗 */ private int type = 0; /** * 當範本自訂事件增加的屬性名稱與下面變數名一致時,則會自動指派於此對應變數 * JobValue代表綁定的值為儲存格,其他類型資料需按照各自類型去定義類,例如字串為String * 不支援儲存格組 */ private JobValue Price; private int MinNum; public void doJob(Calculator calculator) throws Exception { FineLoggerFactory.getLogger().error("------Price:" + Price.getValue() + ",MinNum:" + MinNum + "------"); //在fanruan.log以error級別匯出獲取到的參數值 /** * 獲取Price的值並轉為整數型態,賦給price物件 */ if (Price != null) { int price = 0; if (Price.getValue() instanceof Integer) { //判斷Price的值是否為整數 price = (Integer) Price.getValue(); //將Price的值強轉為整數型態,防止比較時因類型不一致導致報錯 } else { price = Integer.parseInt(Utils.objectToString(Price.getValue())); } /** * 校驗價格是否小於設定的最小值,是的話傳回1(失敗),否則傳回0(成功) */ if (price < MinNum) { type = 1; } } else { type = 0; } } public String getMessage() { /** * 根據校驗狀態是0(成功)還是1(失敗),設定對應的傳回資訊 */ if (type == 0) { return "校驗成功"; //此處設定的資訊沒有用,成功的時候不會顯示這裏的內容,還是顯示預設"校驗成功" } else { return "價格不能小於" + MinNum; } } public Verifier.Status getType() { // 傳回校驗狀態 return Verifier.Status.parse(type); } public void doFinish(Calculator arg0) throws Exception { }}
1)報表填報屬性介面新增一個「自訂校驗」,點選「編輯」按鈕,如下圖所示:
2)將 2.3 節編寫好的 Java 程式碼copy到自訂函式編輯介面,點選「編譯」按鈕,只有顯示「編譯成功」後,才能儲存,如下圖所示:
注:除了上述編譯方式外,也可以將外部編譯好的 class 檔案放到 %FR_HOME%\webapps\webroot\WEB-INF\classes 資料夾下和程式碼中定義的package 路徑一致的位置,然後點選「選擇按鈕」引用 class 檔案。若修改更換了 class 檔案,則需要重啟設計器或帆軟服務,修改的程式碼才會生效。
點選可下載 class 檔案:VerifyDemo.rar
3)點選增加屬性按鈕,給提交事件新增 2 個屬性,注意值的類型需要和程式碼中定義的類型一致,如下圖所示:
使用填報預覽,點選校驗按鈕。
注:支援行動端預覽。
點選下載範本:自定义校验.cpt
注:範本下載後需按照文檔 2.4 節操作,增加資料校驗事件後才能生效。
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙