呈现器的文档详细信息

简介

在AEM Forms工作区中,可以无缝支持多个表单类型。 这些 Cookie 包括:

  • PDF forms语(XDP/Acroform/平面PDF)
  • 新的HTML表单
  • 图像
  • 第三方应用程序(例如,通信管理)

本文档从语义自定义/组件重用的角度解释了这些呈示器的工作,这样客户需求就得到满足,而不会中断任何再现。 尽管AEM Forms工作区允许任何用户界面/语义更改,但建议不要更改不同表单类型的呈现逻辑,否则结果可能不可预知。 此文档旨在提供指导/知识,以支持渲染相同的表单,在不同的门户中使用相同的工作区组件,而不是修改渲染逻辑本身。

PDF forms

PDF forms由PdfTaskForm View表示。

当XDP表单呈现为PDF时,FormsAugmenter服务会添加FormBridge JavaScript™。 此JavaScript™(在PDF表单中)有助于执行表单提交、表单保存或脱机表单等操作。

在AEM Forms工作区中,PDFTaskForm视图通过位于/lc/libs/ws/libs/ws/pdf.html的中间HTML与FormBridgejavascript通信。 流程是:

PDFTaskForm视图- pdf.html

使用window.postMessage / window.attachEvent('message')进行通信

此方法是父帧与iframe之间的标准通信方式。 在添加新事件之前,将删除先前打开的PDF forms的现有监听器。 此任务还会考虑在“表单”选项卡和“历史记录”选项卡之间切换的视图详细信息。

pdf.html —— 渲染 FormBridge的PDF中的javascript

使用pdfObject.postMessage / pdfObject.messageHandler进行通信

此方法是HTML中与PDF javascript进行通信的标准方式。 PdfTaskForm视图还可以处理简单的PDF并清晰地呈现它。

注意

不建议修改PdfTaskForm视图的pdf.html/内容。

新HTMLForms

新的HTML表单由NewHTMLTaskForm视图呈现。

当XDP表单使用在CRX上部署的移动表单包呈现为HTML时,它还会向表单添加额外的FormBridge javascript,它显示保存和提交表单数据的不同方法。

此javascript与上述PDF forms中所述的javascript不同,但用途类似。

注意

不建议修改NewHTMLTaskForm视图的内容。

Flex·Forms与向导

Flex·Forms由SwfTaskForm呈现,而指南由HtmlTaskForm视图呈现。

在AEM Forms工作区中,这些视图使用/lc/libs/ws/libs/ws/WSNextAdapter.swf中介SWF与构成flex表单/指南的实际SWF通信

通信使用swfObject.postMessage / window.flexMessageHandler进行。

此协议由WsNextAdapter.swf定义。 在添加新表单之前,会删除先前打开的SWF表单中的窗口对象上的现有flexMessageHandlers。 该逻辑还考虑在任务详细信息视图中表单选项卡和历史记录选项卡之间的切换。 WsNextAdapter.swf 用于执行保存或提交等各种表单操作。

注意

不建议修改WSNextAdapter.swf或SwfTaskForm / HtmlTaskForm视图的内容。

第三方应用程序(例如,通信管理)

第三方应用程序使用ExtAppTaskForm视图呈现。

第三方在AEM Forms工作区通信中的应用

AEM Forms工作区监听window.global.postMessage([Message],[Payload])

[消] 息是指定为 SubmitMessage| CancelMessage| ErrorMessage| actionEnabledMessageruntimeMap中第三方应用程序必须使用此界面根据需要通知AEM Forms工作区。 必须使用此界面,因为AEM Forms工作区必须知道提交任务时,它才能清除任务窗口。

AEM Forms工作区与第三方应用程序通信

如果AEM Forms工作区的直接操作按钮可见,它将调用window.[External-App-Name].getMessage([Action]),其中[Action]routeActionMap读取。 第三方应用程序必须监听此接口,然后通过postMessage () API通知AEM Forms工作区。

例如,Flex应用程序可以定义ExternalInterface.addCallback('getMessage', listener)以支持此通信。 如果第三方应用程序希望通过其自己的按钮处理表单提交,则您应指定hideDirectActions = true() in the runtimeMap,并可跳过此监听器。 因此,此构造是可选的。

您可以在Integrating Commenting in AEM Forms工作区<A1/>中阅读有关通信管理的第三方应用程序集成的更多信息。

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