本發(fā)明涉及表單生成的技術(shù)領(lǐng)域,尤其涉及一種動態(tài)表單的高級控件實現(xiàn)方法、裝置及系統(tǒng)。
背景技術(shù):
由于html標(biāo)準(zhǔn)本身的約束,比如對于輸入長度的約束,或是輸入類型的約束(包括數(shù)據(jù)約束、字母約束、漢字約束等),導(dǎo)致傳統(tǒng)表單只能實現(xiàn)簡單的輸入約束和使用用途,而對于動態(tài)表單上用戶的靈活需求,不能得到滿足。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種動態(tài)表單的高級控件實現(xiàn)方法、裝置及系統(tǒng),旨在解決傳統(tǒng)表單受html標(biāo)準(zhǔn)拘束、無法滿足用戶需求的問題。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
一種動態(tài)表單的高級控件實現(xiàn)方法,包括:
腳本存儲步驟:
設(shè)置腳本存儲的數(shù)據(jù)結(jié)構(gòu);數(shù)據(jù)結(jié)構(gòu)中的字段包括腳本類型;
接收用戶輸入到動態(tài)表單的腳本,作為輸入腳本;
根據(jù)所述腳本類型,調(diào)用與所述腳本類型相應(yīng)的執(zhí)行器執(zhí)行所述輸入腳本,對所述輸入腳本的合法性進(jìn)行校驗,獲取校驗結(jié)果;所述校驗結(jié)果包括合法和不合法;
當(dāng)所述校驗結(jié)果為合法時,將所述輸入腳本保存為合法腳本;
腳本執(zhí)行步驟:
編寫html,實現(xiàn)input控件;
根據(jù)所述input控件實現(xiàn)ajax,獲取腳本執(zhí)行請求;
調(diào)用服務(wù)器端對所述腳本執(zhí)行請求是否配置動態(tài)腳本進(jìn)行判斷,獲取判斷結(jié)果;所述判斷結(jié)果包括已配置和未配置;
當(dāng)所述判斷結(jié)果為已配置時,根據(jù)所述腳本類型,調(diào)用與所述腳本類型相應(yīng)的執(zhí)行器執(zhí)行所述合法腳本,獲取腳本執(zhí)行結(jié)果;所述腳本執(zhí)行結(jié)果包括返回結(jié)構(gòu);
根據(jù)所述返回結(jié)構(gòu),通過javascript調(diào)整所述動態(tài)表單的頁面數(shù)據(jù)。
在上述實施例的基礎(chǔ)上,進(jìn)一步地,所述數(shù)據(jù)結(jié)構(gòu)中的字段還包括html控件標(biāo)識和腳本內(nèi)容。
在上述任意實施例的基礎(chǔ)上,進(jìn)一步地,所述腳本類型包括Groovy、Python和Ruby。
一種動態(tài)表單的高級控件實現(xiàn)裝置,包括:
腳本存儲模塊包括:
設(shè)置單元,用于設(shè)置腳本存儲的數(shù)據(jù)結(jié)構(gòu);數(shù)據(jù)結(jié)構(gòu)中的字段包括腳本類型;
輸入單元,用于接收用戶輸入到動態(tài)表單的腳本,作為輸入腳本;
校驗單元,用于根據(jù)所述腳本類型,調(diào)用與所述腳本類型相應(yīng)的執(zhí)行器執(zhí)行所述輸入腳本,對所述輸入腳本的合法性進(jìn)行校驗,獲取校驗結(jié)果;所述校驗結(jié)果包括合法和不合法;
保存單元,用于當(dāng)所述校驗結(jié)果為合法時,將所述輸入腳本保存為合法腳本;
腳本執(zhí)行模塊包括:
編寫單元,用于編寫html,實現(xiàn)input控件;
請求單元,用于根據(jù)所述input控件實現(xiàn)ajax,獲取腳本執(zhí)行請求;
判斷單元,用于調(diào)用服務(wù)器端對所述腳本執(zhí)行請求是否配置動態(tài)腳本進(jìn)行判斷,獲取判斷結(jié)果;所述判斷結(jié)果包括已配置和未配置;
執(zhí)行單元,用于當(dāng)所述判斷結(jié)果為已配置時,根據(jù)所述腳本類型,調(diào)用與所述腳本類型相應(yīng)的執(zhí)行器執(zhí)行所述合法腳本,獲取腳本執(zhí)行結(jié)果;所述腳本執(zhí)行結(jié)果包括返回結(jié)構(gòu);
調(diào)整單元,用于根據(jù)所述返回結(jié)構(gòu),通過javascript調(diào)整所述動態(tài)表單的頁面數(shù)據(jù)。
在上述實施例的基礎(chǔ)上,進(jìn)一步地,所述數(shù)據(jù)結(jié)構(gòu)中的字段還包括html控件標(biāo)識和腳本內(nèi)容。
在上述任意實施例的基礎(chǔ)上,進(jìn)一步地,所述腳本類型包括Groovy、Python和Ruby。
一種動態(tài)表單的高級控件實現(xiàn)系統(tǒng),包括:
上述任一項動態(tài)表單的高級控件實現(xiàn)裝置;
服務(wù)器端,用于受判斷單元調(diào)用,對所述腳本執(zhí)行請求是否配置動態(tài)腳本進(jìn)行判斷,獲取判斷結(jié)果并發(fā)送到判斷單元;
執(zhí)行器,用于受校驗單元調(diào)用,執(zhí)行所述輸入腳本,對所述輸入腳本的合法性進(jìn)行校驗,獲取校驗結(jié)果并發(fā)送到校驗單元;以及受執(zhí)行單元調(diào)用,執(zhí)行所述合法腳本,獲取腳本執(zhí)行結(jié)果并發(fā)送到執(zhí)行單元。
在上述實施例的基礎(chǔ)上,進(jìn)一步地,還包括:
存儲器,用于存儲所述保存單元發(fā)送的所述合法腳本。
在上述任意實施例的基礎(chǔ)上,進(jìn)一步地,所述數(shù)據(jù)結(jié)構(gòu)中的字段還包括html控件標(biāo)識和腳本內(nèi)容。
在上述任意實施例的基礎(chǔ)上,進(jìn)一步地,所述腳本類型包括Groovy、Python和Ruby。
本發(fā)明的有益效果是:
本發(fā)明提供了一種動態(tài)表單的高級控件實現(xiàn)方法、裝置及系統(tǒng),實現(xiàn)了一個允許用戶自定義計算公式的入口,允許用戶輸入不同腳本類型的腳本代碼,這樣在用戶填寫表單時,就可以調(diào)用與腳本類型相應(yīng)的執(zhí)行器執(zhí)行腳本,再把腳本運行結(jié)果回填到表單中,從而靈活地實現(xiàn)用戶在動態(tài)表單上應(yīng)用高級控件的需求。
附圖說明
下面結(jié)合附圖和實施例對本發(fā)明進(jìn)一步說明。
圖1示出了本發(fā)明實施例提供的一種動態(tài)表單的高級控件實現(xiàn)方法的流程圖;
圖2示出了本發(fā)明實施例提供的一種動態(tài)表單的高級控件實現(xiàn)裝置的結(jié)構(gòu)示意圖;
圖3示出了本發(fā)明實施例提供的一種動態(tài)表單的高級控件實現(xiàn)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不限定本發(fā)明。
具體實施例一
如圖1和圖2所示,本發(fā)明實施例提供了一種動態(tài)表單的高級控件實現(xiàn)方法,包括:
腳本存儲步驟S101:
步驟S1011,設(shè)置腳本存儲的數(shù)據(jù)結(jié)構(gòu);數(shù)據(jù)結(jié)構(gòu)中的字段包括腳本類型;
步驟S1012,接收用戶輸入到動態(tài)表單的腳本,作為輸入腳本;
步驟S1013,根據(jù)所述腳本類型,調(diào)用與所述腳本類型相應(yīng)的執(zhí)行器執(zhí)行所述輸入腳本,對所述輸入腳本的合法性進(jìn)行校驗,獲取校驗結(jié)果;所述校驗結(jié)果包括合法和不合法;
步驟S1014,當(dāng)所述校驗結(jié)果為合法時,將所述輸入腳本保存為合法腳本;
腳本執(zhí)行步驟S102:
步驟S1021,編寫html,實現(xiàn)input控件;
步驟S1022,根據(jù)所述input控件實現(xiàn)ajax,獲取腳本執(zhí)行請求;
步驟S1023,調(diào)用服務(wù)器端對所述腳本執(zhí)行請求是否配置動態(tài)腳本進(jìn)行判斷,獲取判斷結(jié)果;所述判斷結(jié)果包括已配置和未配置;
步驟S1024,當(dāng)所述判斷結(jié)果為已配置時,根據(jù)所述腳本類型,調(diào)用與所述腳本類型相應(yīng)的執(zhí)行器執(zhí)行所述合法腳本,獲取腳本執(zhí)行結(jié)果;所述腳本執(zhí)行結(jié)果包括返回結(jié)構(gòu);
步驟S1025,根據(jù)所述返回結(jié)構(gòu),通過javascript調(diào)整所述動態(tài)表單的頁面數(shù)據(jù)。
本發(fā)明實施例實現(xiàn)了一個允許用戶自定義計算公式的入口,允許用戶輸入不同腳本類型的腳本代碼,這樣在用戶填寫表單時,就可以調(diào)用與腳本類型相應(yīng)的執(zhí)行器執(zhí)行腳本,再把腳本運行結(jié)果回填到表單中,從而靈活地實現(xiàn)用戶在動態(tài)表單上應(yīng)用高級控件的需求。
本發(fā)明實施例對數(shù)據(jù)結(jié)構(gòu)中的字段不做限定,優(yōu)選的,所述數(shù)據(jù)結(jié)構(gòu)中的字段還可以包括html控件標(biāo)識和腳本內(nèi)容。
本發(fā)明實施例對腳本類型不做限定,優(yōu)選的,所述腳本類型包括Groovy、Python和Ruby。當(dāng)腳本類型為Groovy時,步驟S1013和步驟S1024中所調(diào)用的執(zhí)行器為Groovy執(zhí)行器。
具體實施例二
如圖2所示,本發(fā)明實施例提供了一種動態(tài)表單的高級控件實現(xiàn)裝置,包括:
腳本存儲模塊201包括:
設(shè)置單元2011,用于設(shè)置腳本存儲的數(shù)據(jù)結(jié)構(gòu);數(shù)據(jù)結(jié)構(gòu)中的字段包括腳本類型;
輸入單元2012,用于接收用戶輸入到動態(tài)表單的腳本,作為輸入腳本;
校驗單元2013,用于根據(jù)所述腳本類型,調(diào)用與所述腳本類型相應(yīng)的執(zhí)行器執(zhí)行所述輸入腳本,對所述輸入腳本的合法性進(jìn)行校驗,獲取校驗結(jié)果;所述校驗結(jié)果包括合法和不合法;
保存單元2014,用于當(dāng)所述校驗結(jié)果為合法時,將所述輸入腳本保存為合法腳本;
腳本執(zhí)行模塊202包括:
編寫單元2021,用于編寫html,實現(xiàn)input控件;
請求單元2022,用于根據(jù)所述input控件實現(xiàn)ajax,獲取腳本執(zhí)行請求;
判斷單元2023,用于調(diào)用服務(wù)器端對所述腳本執(zhí)行請求是否配置動態(tài)腳本進(jìn)行判斷,獲取判斷結(jié)果;所述判斷結(jié)果包括已配置和未配置;
執(zhí)行單元2024,用于當(dāng)所述判斷結(jié)果為已配置時,根據(jù)所述腳本類型,調(diào)用與所述腳本類型相應(yīng)的執(zhí)行器執(zhí)行所述合法腳本,獲取腳本執(zhí)行結(jié)果;所述腳本執(zhí)行結(jié)果包括返回結(jié)構(gòu);
調(diào)整單元2025,用于根據(jù)所述返回結(jié)構(gòu),通過javascript調(diào)整所述動態(tài)表單的頁面數(shù)據(jù)。
本發(fā)明實施例對數(shù)據(jù)結(jié)構(gòu)中的字段不做限定,優(yōu)選的,所述數(shù)據(jù)結(jié)構(gòu)中的字段還可以包括html控件標(biāo)識和腳本內(nèi)容。
本發(fā)明實施例對腳本類型不做限定,優(yōu)選的,所述腳本類型包括Groovy、Python和Ruby。當(dāng)腳本類型為Groovy時,步驟S1013和步驟S1024中所調(diào)用的執(zhí)行器為Groovy執(zhí)行器。
具體實施例三
如圖3所示,本發(fā)明實施例提供了一種動態(tài)表單的高級控件實現(xiàn)系統(tǒng),包括:
具體實施例二中任一項動態(tài)表單的高級控件實現(xiàn)裝置301;
服務(wù)器端302,用于受判斷單元調(diào)用,對所述腳本執(zhí)行請求是否配置動態(tài)腳本進(jìn)行判斷,獲取判斷結(jié)果并發(fā)送到判斷單元;
執(zhí)行器303,用于受校驗單元調(diào)用,執(zhí)行所述輸入腳本,對所述輸入腳本的合法性進(jìn)行校驗,獲取校驗結(jié)果并發(fā)送到校驗單元;以及受執(zhí)行單元調(diào)用,執(zhí)行所述合法腳本,獲取腳本執(zhí)行結(jié)果并發(fā)送到執(zhí)行單元。
優(yōu)選的,本發(fā)明實施例還可以包括存儲器304,用于存儲所述保存單元發(fā)送的所述合法腳本。這樣做的好處是,便于保存合法腳本,防止合法腳本遺失造成不必要的損失。
本發(fā)明實施例對數(shù)據(jù)結(jié)構(gòu)中的字段不做限定,優(yōu)選的,所述數(shù)據(jù)結(jié)構(gòu)中的字段還可以包括html控件標(biāo)識和腳本內(nèi)容。
本發(fā)明實施例對腳本類型不做限定,優(yōu)選的,所述腳本類型包括Groovy、Python和Ruby。當(dāng)腳本類型為Groovy時,步驟S1013和步驟S1024中所調(diào)用的執(zhí)行器為Groovy執(zhí)行器。
需要說明的是,在不沖突的情況下,本發(fā)明中的實施例及實施例中的特征可以相互組合。盡管本發(fā)明已進(jìn)行了一定程度的描述,明顯地,在不脫離本發(fā)明的精神和范圍的條件下,可進(jìn)行各個條件的適當(dāng)變化??梢岳斫猓景l(fā)明不限于所述實施方案,而歸于權(quán)利要求的范圍,其包括所述每個因素的等同替換。