配置提交操作

提交操作简介

当用户单击自适应表单上的“提交”按钮时,将触发提交操作。 您可以在自适应表单上配置提交操作。 自适应表单提供了一些现成的提交操作。 您可以复制和扩展默认的提交操作,以创建您自己的提交操作。 但是,根据您的要求,您可以编写并注册您自己的提交操作以处理已提交表单中的数据。 提交操作可使用同步或异步提交

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

配置提交操作

配置提交操作

自适应表单的默认提交操作包括:

  • 提交到REST端点
  • 发送电子邮件
  • 通过电子邮件发送PDF
  • 调用Forms Workflow
  • 使用表单数据模型提交
  • Forms Portal提交操作
  • 调用AEM工作流
注意

“通过电子邮件发送PDF”提交操作仅适用于使用XFA模板作为表单模型的自适应表单。

注意

确保[AEM_Installation_Directory]\crx-quickstart\temp\datamanager\ASM folder
存在. 临时存储附件时需要该目录。 如果目录不存在,请创建它。

注意

如果预填表单模板、表单数据模型或基于模式的自适应表单(XML或JSON数据)向模式(XML模式、JSON模式、表单模板或表单数据模型)投诉,该数据不包含<afData>、<afBoundData>和</AfUnboundData>标签,然后,自适应表单的无界字段(无界字段是没有bindref属性的自适应表单字段)的数据丢失。

您可以为自适应表单编写自定义提交操作,以满足您的使用案例。 有关详细信息,请参阅编写自适应表单的自定义提交操作

提交到REST端点

提交到REST端点​提交选项将表单中填写的数据传递到配置的确认页,作为HTTPGET请求的一部分。 您可以添加要请求的字段的名称。 请求的格式为:

{fieldName}={request parameter name}

如下图所示,param1param2作为参数传递,这些参数的值从​textbox​和​数字框​字段中复制,以用于下一个操作。

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

配置Rest端点提交操作

配置Rest端点提交操作

注意

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

将提交的数据发布到资源或外部休息端点 

使用​提交到REST Endpoint​动作将提交的数据发布到REST。 URL可以是内部(表单所在的服务器)或外部服务器。

要将数据发布到内部服务器,请提供资源的路径。 数据将发布在资源的路径中。 例如,/content/restEndPoint。 对于这种帖子请求,使用提交请求的验证信息。

要向外部服务器发布数据,请提供URL。 URL的格式为https://host:port/path_to_rest_end_point。 确保配置路径以匿名处理POST请求。

作为感谢页面参数传递的字段值的映射

在上面的示例中,用户在textbox中输入的信息是使用参数param1捕获的。 用于发布使用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和文件附件(如果有)发送到JEE进程上的现有AdobeLiveCycle或AEM Forms。

有关如何配置“提交到Forms Workflow”提交操作的信息,请参阅使用表单工作流提交和处理表单数据。

使用表单数据模型提交

使用表单数据模型提交操作​将指定数据模型对象的已提交的自适应表单数据写入其数据源。 配置提交操作时,您可以选择一个数据模型对象,其提交的数据要写回其数据源。

此外,您可以使用表单数据模型和记录文档(DoR)向数据源提交表单附件。

有关表单数据模型的信息,请参阅AEM Forms Data Integration

Forms Portal提交操作

Forms Portal提交操作​选项使表单数据可通过AEM Forms Portal使用。

有关Forms门户和提交操作的详细信息,请参阅草稿和提交组件

调用AEM Workflow

调用AEM工作流​提交操作将自适应表单与AEM工作流关联。 提交表单后,关联的工作流会自动开始到处理节点。 此外,它还会将数据文件、附件和记录文档(如果适用)放在工作流的有效负荷位置。

在使用​调用AEM Workflow​提交操作之前,配置Experience ManagerDS设置。 有关创建AEM工作流的信息,请参阅OSGi🔗上的以表单为中心的工作流。

Adaptive Form中的服务器端重新验证

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

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

在服务器上验证什么?

自适应表单的现成(OOTB)字段验证(在服务器上重新运行)包括:

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

启用服务器端验证

使用提要栏中“自适应表单”容器下的​在服务器​上重新验证,启用或禁用当前表单的服务器端验证。

启用服务器端验证

启用服务器端验证

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

注意

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

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

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

在验证表达式中支持自定义功能

在验证表达式中支持自定义功能

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

提交操作时出错处理

作为Experience Manager安全和强化准则的一部分,请配置自定义错误页,如404.jsp和500.jsp。 提交表单时,将调用这些处理函数,出现404或500个错误。 当在“发布”节点上触发这些错误代码时,也会调用处理函数。

有关详细信息,请参阅自定义由错误处理程序显示的页面。

On this page

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now