您可以使用Form Bridge API來開啟以XFA為基礎的HTML5表單與您的應用程式之間的通訊管道。 表單橋接API提供connect API來建立連線。
connect API接受處理程式作為參數。 在以XFA為基礎的HTML5表單與Form Bridge之間建立成功的連線後,就會呼叫控制代碼。
您可以使用下列范常式式碼來建立連線。
// Example showing how to connect to FormBridge
window.addEventListener("FormBridgeInitialized",
function(event) {
var fb = event.detail.formBridge;
fb.connect(function() {
//use form bridge functions
})
})
請務必先建立連線,再加入formRuntime.jsp檔案。
getBridgeVersion()
返回指令碼庫的版本號
isConnected() Checks if Form State has been initialized
輸入:無
輸出: 如 果XFA表單狀態已初始化
錯誤:無
connect(handler, context) 建立與FormBridge的連線,並在建立連線並初始化表單狀態後執行函式
輸入:
輸出:無
錯誤:無
getDataXML(選項) 以XML格式傳回目前的表單資料
輸入:
選項:包 含下列屬性的JavaScript物件:
輸出: 無
錯誤: 無
registerConfig(configName, config)向FormBridge 註冊用戶/門戶特定配置。這些配置會覆蓋預設配置。 支援的配置在配置部分中指定。
輸入:
configName: 要覆寫的組態名稱
widgetConfig: 允許使用者使用自訂介面工具集覆寫表單中的預設介面工具集。配置被覆蓋如下:
formBridge.registerConfig("widgetConfig":{/*configuration*/})
pagingConfig: 允許用戶覆蓋僅呈現第一頁的預設行為。配置被覆蓋如下:
window.formBridge.registerConfig("pagingConfig":{pagingDisabled: <true>,shrinkPageDisabled: <true> })。
LoggingConfig: 允許用戶覆蓋記錄級別、禁用類別的記錄,或是顯示日誌控制台還是發送到伺服器。可以按如下方式覆蓋配置:
formBridge.registerConfig{
"LoggerConfig" : {
{
"on":`<true *| *false>`,
"category":`<array of categories>`,
"level":`<level of categories>`, "
type":`<"console"/"server"/"both">`
}
}
SubmitServiceProxyConfig: Allow the users to register submission and logger proxy services.
window.formBridge.registerConfig("submitServiceProxyConfig",
{
"submitServiceProxy" : "`<submitServiceProxy>`",
"logServiceProxy": "`<logServiceProxy>`",
"submitUrl" : "`<submitUrl>`"
});
config: 配置值
Output: 包含dataproperty中配置的原始值的 ** 對象。
錯誤: 無
hideFields(fieldArray)隱 藏其Som運算式在fieldArray中提供的欄位。將指定欄位的存在屬性設定為不可見
輸入:
輸出: 無
錯誤: 無
showFields(fieldArray)顯 示其Som表達式在fieldArray中提供的欄位。將提供欄位的存在屬性設定為可見
輸入:
輸出: 無
錯誤: 無
hideSubmitButtons()隱 藏表單中的所有提交按鈕
getFormState()傳 回表示表單狀態的JSON
輸入: 無
Output: 包含JSON的物件,代表dataproperty中目前的表單 ** 狀態。
錯誤: 無
restoreFormState(選項) 從選項物件中提供的JSON狀態還原表單狀態。此狀態會套用,並在作業完成後呼叫成功或錯誤處理常式
輸入:
選項:包 含下列屬性的JavaScript物件:
輸出: 無
錯誤: 無
setFocus(som) Sets focus on the field specified in the Som expression
setFieldValue(som, value) 設定給定Som表達式的欄位值
輸入:
輸出: 無
錯誤: 在Som表達式不正確的情況下拋出異常
getFieldValue(som)傳 回指定Som運算式的欄位值
Input:包 含必須檢索其值的欄位的Som表達式的陣列
輸出: 在dataproperty中將結果包含為Array的 物件。
錯誤: 無
var a = formBridge.getFieldValue(“xfa.form.form1.Subform1.TextField”);
if(a.errors) {
var err;
while((err = a.getNextMessage()) != null)
alert(a.message)
} else {
alert(a.data[0])
}
getFieldProperties(som, property) 檢索Som表達式中指定欄位的給定屬性的值清單
輸入:
輸出: 在dataproperty中將結果包含為Array的 ** 對象
錯誤: 無
setFieldProperties(som, property, values) 為Som表達式中指定的所有欄位設定給定屬性的值
輸入:
輸出: 無
錯誤: 無
// Example 1: FormBridge.restoreFormState
function loadFormState() {
var suc = function(obj) {
//success
}
var err = function(obj) {
while(var t = obj.getNextMessage()) {
$("#errorDiv").append("<div>"+t.message+"</div>");
}
}
var _formState = // load form state from storage
formBridge.restoreFormState({success:suc,error:err,formState:_formState}); // not passing a context means that this will be formBridge itself. Validation errors will be checked.
}
//--------------------------------------------------------------------------------------------------
//Example 2: FormBridge.submitForm
function SubmitForm() {
var suc = function(obj) {
var data = obj.data;
// submit the data to a url;
}
var err = function(obj) {
while(var t = obj.getNextMessage()) {
$("#errorDiv").append("<div>"+t.message+"</div>");
}
}
formBridge.submitForm({success:suc,error:err}); // not passing a context means that this will be formBridge itself. Validation errors will be checked.
}