當使用者按一下最適化表單上的「提交」按鈕時,會觸發提交動作。 您可以在最適化表單上設定提交動作。 最適化表單提供一些現成可用的提交動作。 您可以複製並延伸預設的提交動作,以建立您自己的提交動作。 不過,根據您的要求,您可以撰寫並註冊自己的提交動作,以處理提交表單中的資料。
當表單預先填入或送出時,提交的資料會透過AEM路由,以對資料進行中介格式的按摩。 資料不會儲存在AEM例項中,除非最適化表單使用Adobe Sign、驗證、表單入口網站草稿或提交,或AEM工作流程
您可以在側欄的「最適化表單容器」屬性的Submission區段中設定提交動作。
操作圖: 配置提交操作
最適化表單的預設提交動作包括:
透過電子郵件傳送PDF的提交動作僅適用於使用XFA範本做為表單模型的最適化表單。
請確定[AEM_Installation_Directory]\crx-quickstart\temp\datamanager\ASM folder exists。 目錄需要臨時儲存附件。 如果目錄不存在,請建立該目錄。
您可以撰寫自訂的提交動作,讓最適化表單符合使用案例。 如需詳細資訊,請參閱針對最適化表單撰寫自訂提交動作。
提交到REST端點提交選項將表單中填充的資料傳遞到配置的確認頁,作為HTTP GET請求的一部分。 您可以新增要請求的欄位名稱。 請求的格式為:
{fieldName}={request parameter name}
如下圖所示,param1
和param2
會以參數的形式傳遞,其值會從textbox和numericbox欄位複製,以用於下一個動作。
您也可以啟用POST請求並提供張貼請求的URL。 若要將資料提交至代管表單的AEM伺服器,請使用與AEM伺服器根路徑對應的相對路徑。 例如,/content/forms/af/SampleForm.html。 若要將資料送出至任何其他伺服器,請使用絕對路徑。
配置Rest端點提交操作
若要將欄位傳遞為REST URL中的參數,所有欄位都必須有不同的元素名稱,即使欄位放在不同的面板上亦然。
使用提交到REST端點操作將提交的資料發佈到其餘URL。 URL可以是內部(轉譯表單的伺服器)或外部伺服器。
若要將資料張貼至內部伺服器,請提供資源路徑。 資料會張貼在資源的路徑上。 例如,/content/restEndPoint。 對於這些貼文請求,使用提交請求的驗證資訊。
若要將資料張貼至外部伺服器,請提供URL。 URL的格式為https:// host:port/path_to_rest_end_point。 請確定您已設定路徑以匿名方式處理POST請求。
在上述範例中,使用參數param1
擷取使用者在textbox
中輸入的資訊。 使用param1
張貼擷取資料的語法為:
String data=request.getParameter("param1");
同樣地,用於發佈XML資料和附件的參數是dataXml
和attachments
。
例如,您在指令碼中使用這兩個參數,將資料剖析至其餘端點。 您使用下列語法來儲存和剖析資料:
String data=request.getParameter("dataXml");
String att=request.getParameter("attachments");
在此示例中,data
儲存XML資料,而att
儲存附件資料。
傳送電子郵件提交動作會在表單成功提交時傳送電子郵件給一或多個收件者。 產生的電子郵件可以包含預先定義格式的表單資料。
所有表格欄位都必須有不同的元素名稱,即使這些名稱位於不同的面板上),以便在電子郵件中包含表格資料。
透過電子郵件傳送PDF提交動作會在成功提交表單時,傳送含有表單資料之PDF的電子郵件給一或多個收件者。
注意: 此提交動作適用於具有記錄檔案範本的XFA型調適性表單和XSD型適應性表單。
「提交至表單」工作流程提交選項會將資料xml和檔案附件(如果有的話)傳送至現有的Adobe LiveCycle或AEM Forms on JEE程式。
有關如何配置「提交至表單」工作流提交操作的資訊,請參閱使用表單工作流提交和處理表單資料。
使用表單資料模型提交操作將表單資料模型中指定資料模型對象的已提交自適應表單資料寫入其資料源。在配置提交操作時,您可以選擇要將其提交的資料寫入其資料源的資料模型對象。
此外,您也可以使用表單資料模型和記錄檔案(DoR)將表單附件提交至資料來源。
如需表單資料模型的詳細資訊,請參閱AEM Forms Data Integration。
Forms Portal Submit Action選項可讓表單資料透過AEM Forms入口網站提供。
如需Forms Portal和提交動作的詳細資訊,請參閱草稿與提交元件。
叫用AEM Workflow送出動作會將最適化表單與AEM Workflow建立關聯。 提交表單時,相關工作流程會自動在處理節點上啟動。 此外,它還會將資料檔案、附件和記錄檔案(如果適用)放在工作流程的裝載位置。
在使用「叫用AEM Workflow 提交動作」之前,請先設定AEM DS設定。 如需有關建立AEM工作流程的詳細資訊,請參閱「OSGi的表單導向工作流程」。
通常,在任何線上資料擷取系統中,開發人員會在用戶端放置一些JavaScript驗證,以強制執行一些業務規則。 但是在現代瀏覽器中,使用者可以略過這些驗證,並使用各種技術(例如Web Browser DevTools Console)手動進行提交。 這些技術也適用於適應性表單。 表單開發人員可以建立各種驗證邏輯,但技術上來說,使用者可以略過這些驗證邏輯,並將無效的資料送出至伺服器。 無效的資料會中斷表單作者已強制執行的業務規則。
伺服器端重新驗證功能也提供執行最適化表單作者在伺服器上設計最適化表單時所提供驗證的功能。 它可防止在表單驗證中呈現的資料提交和違反業務規則的行為受到任何可能的危害。
在伺服器上重新運行自適應表單的出廠設定(OOTB)欄位驗證,包括:
使用側欄中「Adaptive Form Container」(最適化表單容器)下的「Revalidate on server<a1/」(在伺服器上重新驗證)來啟用或禁用當前表單的伺服器端驗證。
驗證圖: 啟用伺服器端驗證
如果使用者略過這些驗證並送出表單,伺服器會再次執行驗證。 如果驗證在伺服器端失敗,則會停止提交交易。 最終用戶再次呈現原始形式。 擷取的資料和提交的資料會以錯誤呈現給使用者。
有時,對於複雜的驗證規則,完全的驗證指令碼駐留在自定義函式中,並且作者從欄位驗證表達式中調用這些自定義函式。 若要讓此自訂函式館在執行伺服器端驗證時已知可用,表單作者可在Adaptive Form Container屬性的Basic標籤下設定AEM用戶端程式庫的名稱,如下所示。
訂函式圖: 支援驗證運算式中的自訂函式
作者可依最適化表單設定自訂javascript程式庫。 在程式庫中,僅保留可重複使用的函式,而這些函式依賴於jquery和undershore.js協力廠商程式庫。
作為AEM安全性與強化准則的一部分,請設定自訂錯誤頁面,例如404.jsp和500.jsp。 在提交表單404或500錯誤時,會呼叫這些處理常式。 在「發佈」節點上觸發這些錯誤代碼時,也會調用處理程式。
如需詳細資訊,請參閱自訂錯誤處理常式所顯示的頁面。