配置提交操作

提交動作簡介

當使用者按一下最適化表單上的「提交」按鈕時,會觸發提交動作。 您可以在最適化表單上設定提交動作。 最適化表單提供一些立即可用的提交動作。 您可以複製並擴展預設提交動作,以建立自己的提交動作。 不過,您可以根據需求撰寫並註冊自己的提交動作,以便以提交的表單處理資料。 提交動作可使用同步或非同步提交

您可以在側邊欄的適用性表單容器屬性的​提交​區段中設定提交動作。

配置提交操作

配置提交操作

適用性表單可用的預設提交動作為:

  • 提交到REST端點
  • 傳送電子郵件
  • 透過電子郵件傳送PDF
  • 叫用Forms Workflow
  • 使用表單資料模型提交
  • Forms Portal提交動作
  • 叫用AEM工作流程
注意

透過電子郵件傳送PDF提交動作僅適用於以XFA範本作為表單模型的最適化表單。

注意

確保[AEM_Installation_Directory]\crx-quickstart\temp\datamanager\ASM folder
存在. 臨時儲存附件時需要該目錄。 如果目錄不存在,請建立它。

注意

如果您預填表單範本、表單資料模型或基於結構的適用性表單(含XML或JSON資料)向結構(XML結構、JSON結構、表單範本或表單資料模型)投訴,該結構為資料不包含<afData>、<afBoundData>和</afUbnoundedData>標籤,則無界欄位的資料(無界欄位為沒有binf屬性的適用性表單欄位)會遺失。

您可以撰寫最適化表單的自訂提交動作,以符合您的使用案例。 如需詳細資訊,請參閱撰寫最適化表單的自訂提交動作

提交到REST端點

提交至REST端點​提交選項會將表單中填入的資料傳遞至已設定的確認頁面,作為HTTPGET請求的一部分。 您可以新增要請求的欄位名稱。 請求的格式為:

{fieldName}={request parameter name}

如下圖所示, param1param2會以參數的形式傳遞,其值是從下一個動作的​textbox​和​numeric box​欄位複製而來。

您也可以​啟用POST請求​並提供要張貼請求的URL。 要向托管表單的Experience Manager伺服器提交資料,請使用與Experience Manager伺服器的根路徑相對應的相對路徑。 例如, /content/forms/af/SampleForm.html。 要向任何其他伺服器提交資料,請使用絕對路徑。

配置Rest端點提交操作

配置Rest端點提交操作

注意

若要在REST URL中以參數形式傳遞欄位,所有欄位都必須有不同的元素名稱,即使欄位放置在不同的面板上亦然。

將提交的資料發佈至資源或外部休息端點 

使用​Submit to REST Endpoint​動作,將提交的資料發佈到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資料和附件的參數為dataXmlattachments

例如,在指令碼中使用這兩個參數可將資料剖析至余下的端點。 您使用下列語法來儲存和剖析資料:

String data=request.getParameter("dataXml");
String att=request.getParameter("attachments");

在此示例中,data儲存XML資料,而att儲存附件資料。

傳送電子郵件

傳送電子郵件​提交動作會在表單成功提交時傳送電子郵件給一或多個收件者。 產生的電子郵件可包含預先定義格式的表單資料。

注意

所有表單欄位都必須有不同的元素名稱,即使它們放置在不同的面板上亦然),以便將表單資料包含在電子郵件中。

透過電子郵件傳送PDF

透過電子郵件傳送PDF​提交動作會在成功提交表單時,傳送內含表單資料之PDF的電子郵件給一或多個收件者。

注意

此提交動作適用於具有記錄檔案範本的XFA型適用性表單和XSD型適配表單。

調用Forms Workflow

提交至Forms Workflow​提交選項會將資料xml和檔案附件(如果有)傳送至現有AdobeLiveCycle或JEE流程中的AEM Forms。

有關如何配置「提交至Forms Workflow提交」操作的資訊,請參閱使用表單工作流程提交和處理表單資料

使用表單資料模型提交

使用表單資料模型提交動作會將表單資料模型中指定資料模型物件已提交的最適化表單資料寫入其資料來源。​在配置提交操作時,您可以選擇要將其提交資料寫回其資料源的資料模型對象。

此外,您可以使用表單資料模型和記錄檔案(DoR)將表單附件提交到資料源。

如需表單資料模型的相關資訊,請參閱AEM Forms資料整合

Forms Portal提交操作

Forms入口網站提交動作​選項可透過AEM Forms入口網站取得表單資料。

如需Forms入口網站和提交動作的詳細資訊,請參閱草稿和提交元件

叫用AEM Workflow

叫用AEM Workflow​提交動作會將最適化表單與AEM Workflow建立關聯。 提交表單時,相關聯的工作流程會自動在處理節點上啟動。 此外,它會將資料檔案、附件和記錄檔案(如果適用)放置在工作流的裝載位置。

使用​叫用AEM Workflow​提交動作之前,請配置Experience ManagerDS設定。 如需建立AEM工作流程的詳細資訊,請參閱OSGi🔗上的表單導向工作流程。

適用性表單中的伺服器端重新驗證

通常,在任何線上資料擷取系統中,開發人員會在用戶端放置一些JavaScript驗證,以強制執行一些業務規則。 但在現代瀏覽器中,一般使用者可以略過這些驗證,並使用各種技術(例如網頁瀏覽器DevTools主控台)手動執行提交作業。 此類技術對於最適化表單也有效。 表單開發人員可以建立各種驗證邏輯,但技術上,一般使用者可以略過這些驗證邏輯,並將無效資料提交至伺服器。 無效資料會破壞表單作者已強制執行的業務規則。

伺服器端重新驗證功能也可執行最適化表單作者在伺服器上設計最適化表單時所提供的驗證。 它可防止表單驗證中呈現的資料提交和業務規則違反行為受到任何可能的影響。

要在伺服器上驗證什麼?

伺服器上重新執行的最適化表單的現成可用(OOTB)欄位驗證包括:

  • 必要
  • 驗證子句
  • 驗證運算式

啟用伺服器端驗證

使用側邊欄中「適用性表單容器」下方的「在伺服器​上重新驗證」,啟用或停用目前表單的伺服器端驗證。

啟用伺服器端驗證

啟用伺服器端驗證

如果最終用戶繞過這些驗證並提交表單,伺服器將再次執行驗證。 如果驗證在伺服器端失敗,則提交交易會停止。 最終用戶將再次顯示原始表單。 擷取的資料和提交的資料會以錯誤形式呈現給使用者。

注意

伺服器端驗證會驗證表單模型。 建議您建立個別的用戶端程式庫以進行驗證,但不要在相同的用戶端程式庫中與其他項目(例如HTML樣式和DOM操作)混合使用。

支援驗證運算式中的自訂函式

有時,如果有複雜的驗證規則,確切的驗證指令碼會位於自訂函式中,而作者會從欄位驗證運算式呼叫這些自訂函式。 若要讓此自訂函式程式庫在執行伺服器端驗證時已知且可供使用,表單作者可以在「適用性表單容器」屬性的​Basic​標籤下設定AEM用戶端程式庫的名稱,如下所示。

支援驗證運算式中的自訂函式

支援驗證運算式中的自訂函式

作者可以根據最適化表單來設定customJavaScript程式庫。 在程式庫中,僅保留可重複使用的函式,這些函式依存於jquery和underscore.js協力廠商程式庫。

提交操作時出錯

作為Experience Manager安全性和強化准則的一部分,請配置自定義錯誤頁,如404.jsp和500.jsp。 提交表單時,會呼叫這些處理常式404或500錯誤。 在發佈節點上觸發這些錯誤代碼時,也會呼叫處理常式。

如需詳細資訊,請參閱自訂顯示於錯誤處理常式的頁面。

本頁內容