创建具有可重复部分的表单

可重复部分是可动态添加或删除到表单的面板。

例如,在申请工作时,求职者会提供以前的雇佣详细信息,如公司名称、职责、项目和其他信息。 所有雇主的信息都要求不同但相似的部分。 在这种情况下,雇佣表单提供雇主部分,并提供动态添加更多此类部分的选项。 动态添加的这些部分称为“可重复”部分。

可以使用以下方法之一创建可重复面板:

通过脚本使用实例管理器 

  1. 在编辑模式中,选择一个面板,然后点按cmppr。 在提要栏中的“属性”下,启用​“使面板可重复”。 指定​Maximum​和​Minimum​字段的值。

    “最大”字段指定面板在页面上可显示的最大次数。 您可以在“最大计数”字段中指定–1,以允许该面板无限次地显示。

    “最小”字段指定面板在表单上显示的最小次数。 如果将“最小计数”字段设置为零,稍后您可以在再现完成后通过脚本删除所有实例。

    注意

    要创建不可重复的面板,请将“最大值”和“最小值”字段的值设置为1。 折叠布局不支持“最大计数”字段中的–1。 可以指定一个高数来给出无限值的概念。

  2. 要重复的面板的父级应包含“添加”和“删除”按钮,以管理可重复面板的实例。 请执行以下步骤将按钮插入父项并在按钮上启用脚本:

    1. 在提要栏中,将按钮组件拖放到面板的父级。 选择组件,然后点按edit-rules。 按钮的规则在规则编辑器中打开。

    2. 在“规则编辑器”窗口中,单击​创建

      在“表单对象和函数”行中选择​可视编辑器

      1. 在规则区域的WHEN下,单击状态​

      2. 在THEN下:

        • 要创建添加面板按钮,请选择​添加实例,然后使用 toggle-side-panel拖放面板,或使用​放置对象或在此处选择面板。
        • 要创建删除面板按钮,请选择​删除实例,然后使用 toggle-side-panel拖放面板,或使用​放置对象或在此处选择面板。

      在“表单对象和函数”行中选择​代码编辑器。 单击​编辑规则​并在代码区域中:

      • 要创建添加面板按钮,请指定this.panel.instanceManager.addInstance()
      • 要创建删除面板按钮,请指定this.panel.instanceManager.removeInstance(this.panel.instanceIndex)

      单击​完成

      注意

      如果某个字段属于可重复面板,则无法在脚本中使用其名称直接访问该面板。 要访问该字段,请使用InstanceManager中的instances API指定该字段所属的可重复实例。 使用InstanceManager中的instances API的语法为:

      <panelName>.instanceManager.instances[<instanceNumber>].<fieldname>

      例如,您可以创建一个带有文本框的可重复面板的自适应表单。 使用三个可重复的文本框预填表单时,您需要以下xml:

      <panel1><textbox1>AA1</panel1></textbox1>

      <panel1><textbox1>AA2</panel1></textbox1>

      <panel1><textbox1>AA3</panel1></textbox1>

      要读取AA1数据,请指定:

      Panel1.instanceManager.instances[0].textbox.value

      要读取AA2数据,请指定:

      Panel1.instanceManager.instances[1].textbox.value

      有关详细信息,请参阅:类:InstanceManager#instances in AEM Forms Java API参考

      注意

      从自适应表单删除面板的所有实例后,若要添加已删除面板的实例,请使用_panelName语法捕获面板的实例管理器,并使用实例管理器的addInstance API添加已删除的实例。 例如,_panelName.addInstance()。 它会添加已删除面板的实例。

使用父面板的折叠布局  

面板具有各种布局选项。 针对折叠式设计的“布局”选项开箱即用地支持可重复面板。 通过“布局”按顺序设计选项,执行以下步骤以创建可重复面板:

  1. 在要重复的面板的父面板上,点按cmppr。 您可以在提要栏中查看属性。 在​布局​下拉列表中,选择​折叠

  2. 在要重复的面板上,点按cmppr。 您可以在提要栏中查看面板属性。 启用​使面板可重复​选项卡,并为​Maximum​和​Minimum​字段指定值。

    现在,您可以使用加号(+)和删除(delete-panel)按钮来添加和删除面板。

使用表单模板中的重复子表单(XDP/XSD)

可重复子表单类似于自适应Forms中的可重复面板。 在AEM Forms Designer中,请执行以下步骤以创建重复的子表单:

  1. 在“层次结构”调板中,选择要重复的子表单的父子表单。
  2. 在“对象”调板中,单击“子表单”选项卡,在“内容”列表中,选择“流”。
  3. 选择要重复的子表单。
  4. 在“对象”调板中,单击“子表单”选项卡,然后在“内容”列表中,选择“已定位”或“已流”。
  5. 单击“绑定”选项卡,然后为每个数据项选择“重复子表单”。
  6. 要指定最小重复次数,请选择“最小计数”,并在关联框中键入一个数字。 如果此选项设置为0,并且在数据合并时没有为子表单中的对象提供数据,则在呈现表单时不放置子表单。
  7. 要指定子表单重复次数的最大值,请选择“最大”,并在关联框中键入一个数字。 如果未在“最大”框中指定值,则子表单重复次数为无限。
  8. 要指定一组子表单重复次数,而不管数据数量如何,请选择“初始计数”,并在关联框中键入一个数字。 如果您选择此选项,且没有可用数据,或存在的数据条目数少于指定的初始计数值,则子表单的空实例仍放置在表单上。
  9. 在父子表单中添加两个按钮 — 一个用于添加实例,另一个用于删除可重复子表单的实例。 有关详细步骤,请参阅构建操作
  10. 现在,将表单模板链接到自适应表单。 有关详细步骤,请参阅基于模板创建自适应表单
  11. 使用在步骤9中创建的按钮添加和删除子表单。

附加的.zip文件包含一个可重复的子表单示例。

获取文件

使用XML模式(XSD)的重复设置

您可以从XML模式和任何复杂类型元素的minOccours & maxOccurs属性创建可重复面板。 有关XML模式的详细信息,请参阅使用XML模式作为表单模型创建自适应表单

在以下代码中,SampleType面板使用minOccours & maxOccurs属性。

<?xml version="1.0" encoding="utf-8" ?>
    <xs:schema targetNamespace="https://adobe.com/sample.xsd"
                    xmlns="https://adobe.com/sample.xsd"
                    xmlns:xs="https://www.w3.org/2001/XMLSchema"
                >

        <xs:element name="sample" type="SampleType"/>

        <xs:complexType name="SampleType">
            <xs:sequence>
                <xs:element name="leaderName" type="xs:string" default="Enter Name"/>
                <xs:element name="assignmentStartDate" type="xs:date"/>
                <xs:element name="gender" type="GenderEnum"/>
                <xs:element name="noOfProjectsAssigned" type="IntType"/>
                <xs:element name="assignmentDetails" type="AssignmentDetails"
                                            minOccurs="0" maxOccurs="10"/>
            </xs:sequence>
        </xs:complexType>

        <xs:complexType name="AssignmentDetails">
            <xs:attribute name="name" type="xs:string" use="required"/>
            <xs:attribute name="durationOfAssignment" type="xs:unsignedInt" use="required"/>
            <xs:attribute name="numberOfMentees" type="xs:unsignedInt" use="required"/>
             <xs:attribute name="descriptionOfAssignment" type="xs:string" use="required"/>
             <xs:attribute name="financeRelatedProject" type="xs:boolean"/>
       </xs:complexType>
  <xs:simpleType name="IntType">
            <xs:restriction base="xs:int">
            </xs:restriction>
        </xs:simpleType>
  <xs:simpleType name="GenderEnum">
            <xs:restriction base="xs:string">
                <xs:enumeration value="Female"/>
                <xs:enumeration value="Male"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:schema>
注意

对于非折叠布局,请使用自适应表单按钮组件添加和删除实例。

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