自适应表单提交操作

当用户单击自适应表单上的​Submit​按钮时,会触发提交操作。 自适应Forms提供了一些开箱即用的提交操作。 现成可用的提交操作包括:

您还可以扩展默认的提交操作以创建您自己的提交操作。

您可以在侧栏自适应表单容器属性的​Submission​部分中配置提交操作。

配置提交操作

提交到REST端点

使用​Submit to REST Endpoint​操作将提交的数据发布到其余的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存储附件数据。

Submit to REST endpoint​提交操作会将表单中填写的数据提交到配置的确认页面,以作为HTTPGET请求的一部分。 您可以添加要请求的字段名称。 请求的格式为:

{fieldName}={request parameter name}

如下图所示, param1param2将作为参数进行传递,其值复制自​textbox​和​numericbox​字段,供下一个操作使用。

配置Rest端点提交操作

您还可以​Enable POST request​并提供用于发布请求的URL。 要向托管表单的AEM服务器提交数据,请使用与AEM服务器的根路径对应的相对路径。 例如, /content/forms/af/SampleForm.html. 要向任何其他服务器提交数据,请使用绝对路径。

注意

要在REST URL中将字段作为参数传递,所有字段必须具有不同的元素名称,即使这些字段放置在不同的面板上也是如此。

发送电子邮件

您可以使用​Send Email​提交操作,在成功提交表单时向一个或多个收件人发送电子邮件。 生成的电子邮件可以包含预定义格式的表单数据。 例如,在以下模板中,将从提交的表单数据中检索客户名称、送货地址、状态名称和邮政编码。

"'

您好${customer_Name},

以下设置为默认送货地址:
${customer_Name},
${customer_Shipping_Address},
${customer_State},
${customer_ZIPCode}

Regwers,
WKND

""
注意
  • 所有表单字段必须具有不同的元素名称,即使这些字段放置在自适应表单的不同面板上也是如此。
  • AEM as aCloud Service要求加密出站邮件。 默认情况下,禁用出站电子邮件。 要激活它,请向请求访问提交支持票证。

您还可以在电子邮件中包含附件和记录文档(DoR)。 要启用​Attach Document of Record​选项,请配置自适应表单以生成记录文档(DoR)。 您可以启用选项,以从“自适应表单”属性生成记录文档。

使用表单数据模型提交

Submit using Form Data Model​提交操作将表单数据模型中指定数据模型对象提交的自适应表单数据写入其数据源。 在配置提交操作时,您可以选择要将其提交的数据写回其数据源的数据模型对象。

此外,您还可以使用表单数据模型和记录文档(DoR)将表单附件提交到数据源。 有关表单数据模型的信息,请参阅AEM Forms 数据集成

调用AEM工作流

Invoke an AEM Workflow​提交操作将自适应表单与AEM工作流关联。 提交表单后,关联的工作流将自动在创作实例上启动。 提交操作会将以下内容放在工作流的有效负荷位置:

  • 数据文件:它包含提交到自适应表单的数据。可以使用​Data File Path​选项指定文件的名称以及相对于有效负载的文件路径。 例如,/addresschange/data.xml路径会创建一个名为addresschange的文件夹,并将其放置为相对于有效负荷。 您还可以仅指定data.xml来仅发送已提交的数据,而不创建文件夹层次结构。

  • 附件:您可以使用选 Attachment Path 项指定文件夹名称,以存储上传到自适应表单的附件。文件夹是相对于有效负载创建的。

  • 记录文档:它包含为自适应表单生成的记录文档。可以使用​Document of Record Path​选项指定记录文件的名称和相对于有效负载的文件路径。 例如,/addresschange/DoR.pdf路径会创建一个相对于有效负荷的名为addresschange的文件夹,并将DoR.pdf相对于有效负荷放置。 您还可以仅指定DoR.pdf来仅保存记录文档,而不创建文件夹层次结构。

在使用​Invoke an AEM Workflow​提交操作之前,请为​AEM DS settings service​配置配置以下内容:

  • Processing Server URL:处理服务器是触发Forms或AEM工作流的服务器。此URL可以与AEM创作实例或其他服务器的URL相同。

  • Processing Server User Name:工作流用户的用户名

  • Processing Server Password:工作流用户的密码

要设置配置值,请使用AEM SDK生成OSGi配置,并将配置部署到Cloud Service实例。

使用同步或异步提交

提交操作可以使用同步或异步提交。

同步提交:传统上,Web表单配置为同步提交。在同步提交中,当用户提交表单时,会将用户重定向到确认页面、感谢页面,或者如果提交失败,则会重定向到错误页面。 您可以选择​Use asynchronous submission​选项,将用户重定向到网页或在提交时显示消息。

配置提交操作

异步提交:现代Web体验(如单页应用程序)越来越受欢迎,其中网页保持静态,而客户端 — 服务器交互在后台进行。现在,您可以通过配置异步提交,通过自适应Forms提供此体验。

自适应表单中的服务器端重新验证

通常,在任何在线数据捕获系统中,开发人员会在客户端放置一些JavaScript验证,以强制执行一些业务规则。 但在现代浏览器中,最终用户可以绕过这些验证,使用各种技术(如Web浏览器开发工具控制台)手动执行提交。 此类技术也适用于自适应Forms。 表单开发人员可以创建各种验证逻辑,但从技术上讲,最终用户可以绕过这些验证逻辑,将无效数据提交到服务器。 无效数据会破坏表单作者强制执行的业务规则。

服务器端重新验证功能还允许运行自适应Forms作者在服务器上设计自适应表单时提供的验证。 它可防止在表单验证中表示的数据提交和业务规则违规的任何潜在危害。

在服务器上验证什么?

自适应表单的开箱即用(OOTB)字段验证(将在服务器中重新运行)包括:

  • 必填
  • 验证图片子句
  • 验证表达式

启用服务器端验证

使用侧栏中自适应表单容器下的​Revalidate on server ,启用或禁用当前表单的服务器端验证。

启用服务器端验证

启用服务器端验证

如果最终用户绕过这些验证并提交表单,服务器将再次执行验证。 如果验证在服务器端失败,则提交事务将停止。 最终用户将再次看到原始表单。 捕获的数据和提交的数据将作为错误呈现给用户。

注意

服务器端验证可验证表单模型。 建议您创建一个单独的客户端库以进行验证,但不要将其与同一客户端库中的HTML样式和DOM操作等其他内容混合使用。

在验证表达式中支持自定义函数

有时,如果存在​复杂的验证规则,则确切的验证脚本驻留在自定义函数中,并且作者从字段验证表达式中调用这些自定义函数。 要在执行服务器端验证时将此自定义函数库公开并可用,表单作者可以在自适应表单容器属性的​Basic​选项卡下配置AEM客户端库的名称,如下所示。

在验证表达式中支持自定义函数

在验证表达式中支持自定义函数

作者可以根据自适应表单配置customJavaScript库。 在库中,仅保留依赖于jquery和undersore.js第三方库的可重用函数。

处理提交操作时出错

作为AEM安全和强化准则的一部分,请配置自定义错误页,如400.jsp、404.jsp和500.jsp。 在提交表单400、404或500错误时,会调用这些处理程序。 当在“发布”节点上触发这些错误代码时,也会调用处理程序。 您还可以为其他HTTP错误代码创建JSP页。

当您使用XML或JSON数据预填表单数据模型或基于架构的自适应表单时,如果某个架构的数据不包含<afData><afBoundData></afUnboundData>标记,则自适应表单的无界字段的数据将丢失。 架构可以是XML架构、JSON架构或表单数据模型。 无界字段是没有bindref属性的自适应表单字段。

在此页面上