可重复部分是可动态添加或删除到表单的面板。
例如,在申请工作时,求职者会提供以前的雇佣详细信息,如公司名称、角色、项目和其他信息。 所有雇主的信息都需要不同但相似的部分。 在这种情况下,雇佣表单提供雇主部分,还提供动态添加更多此类部分的选项。 这些动态添加的部分称为“可重复”部分。
您可以使用以下方法之一创建可重复的面板:
在编辑模式中,选择一个面板,然后点按。 在提要栏的“属性”下,启用使面板可重复。 指定Maximum和Minimum字段的值。
最大值字段指定面板在页面上可显示的最大次数。 您可以在“最大计数”字段中指定-1,以允许该面板出现无限次。
“最小”字段指定面板在表单上显示的最小次数。 如果将“最小计数”字段设置为零,则以后可以在再现完成后通过脚本删除所有实例。
要创建不可重复的面板,请将“最大值”和“最小值”字段的值设置为1。 折叠布局不支持“最大计数”字段中的-1。 可指定一个高数,以给出无限值的概念。
要重复的面板的父级应包含添加和删除按钮,以管理可重复面板的实例。 请执行以下步骤将按钮插入父项并在按钮上启用脚本:
在提要栏中,将按钮组件拖放到面板的父级。 选择组件,然后点按。 按钮的规则在规则编辑器中打开。
在“规则编辑器”窗口中,单击创建。
在“表单对象和函数”行中选择可视编辑器。
在规则区域的WHEN下,单击选择状态。
在THEN下:
在“表单对象和函数”行中选择代码编辑器。 单击编辑规则并在代码区域中:
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 FormsJava API引用。
当从自适应表单删除面板的所有实例时,要添加已删除面板的实例,请使用_panelName语法捕获该面板的实例管理器,并使用实例管理器的addInstance API添加已删除的实例。 例如,_panelName.addInstance()。 它会添加已删除面板的实例。
面板具有各种布局选项。 折叠式设计布局选项开箱即用,支持可重复面板。 通过“针对相应设计的布局”选项,执行以下步骤以创建可重复面板:
在要重复的面板的父项上,点按。 您可以在提要栏中查看属性。 在布局下拉框中,选择Accordion。
在要重复的面板上,点按。 您可以在提要栏中看到面板属性。 启用使面板可重复选项卡,并指定最大和最小字段的值。
现在,您可以使用加号(+)和删除()按钮来添加和删除面板。
可重复的子表单与自适应Forms中可重复的面板相似。 在“AEM Forms设计器”中,执行以下步骤以创建重复的子表单:
附加的。zip文件包含可重复的子表单示例。
您可以从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>
对于非折叠布局,使用自适应表单按钮组件添加和删除实例。