Las secciones repetibles son paneles que se pueden agregar o eliminar dinámicamente a un formulario.
Por ejemplo, al solicitar un trabajo, el buscador de trabajo proporciona detalles de trabajo anteriores, como el nombre de la compañía, la función, el proyecto y otra información. La información de todos los empleadores requiere secciones diferentes pero similares. En ese caso, el formulario de empleo proporciona una sección de empleadores y también ofrece la opción de agregar dinámicamente más secciones de ese tipo. Estas secciones, que se agregan dinámicamente, se denominan secciones repetibles.
Puede utilizar uno de los siguientes métodos para crear paneles repetitivos:
En el modo de edición, seleccione un panel y toque . En la barra lateral, en Propiedades, habilite Hacer que el panel se pueda repetir. Especifique valores para los campos Máximo y Mínimo.
El campo Máximo especifica el número máximo de veces que puede aparecer un panel en la página. Puede especificar -1 en el campo Número máximo para permitir que el panel aparezca por un número infinito de veces.
El campo Mínimo especifica el número mínimo de veces que aparece un panel en el formulario. Si establece el campo Recuento mínimo en cero, más adelante puede eliminar todas las instancias mediante secuencias de comandos una vez finalizada la representación.
Para crear un panel no repetible, defina el valor del campo Máximo y Mínimo en uno. El diseño de acordeón no admite -1 en el campo Número máximo. Puede especificar un número elevado para dar la noción de valor infinito.
El elemento principal del panel, que se va a repetir, debe contener botones de adición y eliminación para administrar las instancias de los paneles repetibles. Siga los pasos siguientes para insertar botones en el elemento principal y activar secuencias de comandos en los botones:
Desde la barra lateral, arrastre y suelte un componente de botón en el elemento principal del panel. Seleccione el componente y toque . Las reglas del botón se abren en el editor de reglas.
En la ventana Editor de reglas, haga clic en Crear.
Seleccione Editor visual en la fila Objetos y funciones de formulario.
En el área de regla, en CUÁNDO, seleccione el estado donde se hace clic.
En ENTONCES:
Seleccione Editor de código en la fila Objetos y funciones de formulario. Haga clic en Editar reglas y en el área de código:
this.panel.instanceManager.addInstance()
this.panel.instanceManager.removeInstance(this.panel.instanceIndex)
Haga clic en Listo.
Si un campo pertenece a un panel repetible, no podrá acceder a él directamente utilizando su nombre en las secuencias de comandos. Para acceder al campo, especifique la instancia repetible a la que pertenece el campo mediante la API instances
en InstanceManager
. La sintaxis para utilizar la API instances
en InstanceManager
es:
<panelName>.instanceManager.instances[<instanceNumber>].<fieldname>
Por ejemplo, se crea un formulario adaptable con un panel repetible que tiene un cuadro de texto. Al rellenar previamente el formulario con tres cuadros de texto repetibles, necesita el siguiente xml:
<panel1><textbox1>AA1</panel1></textbox1>
<panel1><textbox1>AA2</panel1></textbox1>
<panel1><textbox1>AA3</panel1></textbox1>
Para leer datos de AA1, especifique:
Panel1.instanceManager.instances[0].textbox.value
Para leer datos de AA2, especifique:
Panel1.instanceManager.instances[1].textbox.value
Para obtener más información, consulte: Clase: InstanceManager#instance in Referencia de API de Java de AEM Forms.
Cuando se eliminan todas las instancias de un panel de un formulario adaptable, para agregar una instancia del panel eliminado, utilice la sintaxis _panelName para capturar el administrador de instancias del panel y utilice la API addInstance de instance manager para agregar la instancia eliminada. Por ejemplo, _panelName.addInstance(). Agrega una instancia del panel quitado.
Un panel tiene varias opciones de diseño. La opción de diseño de acordeón Layout tiene la compatibilidad lista para paneles repetibles. Realice los siguientes pasos en el panel repetible con la opción Diseño para el diseño acorde:
En el panel principal que se va a repetir, toque . Puede ver las propiedades en la barra lateral. En la lista desplegable Diseño, seleccione Acordeón.
En un panel, que se va a repetir, toque . Puede ver las propiedades del panel en la barra lateral. Habilite la ficha Hacer que el panel sea repetible y especifique el valor para los campos Máximo y Mínimo.
Ahora puede utilizar los botones más (+) y eliminar ( ) para agregar y quitar los paneles.
El subformulario repetible es similar a los paneles repetitivos de Forms adaptable. En AEM Forms Designer, realice los siguientes pasos para crear un subformulario de repetición:
El archivo .zip adjunto contiene un subformulario de ejemplo repetible.
Puede crear paneles repetibles a partir de un Esquema XML y de la propiedad minOccours & maxOccurs de cualquier elemento de tipo complejo. Para obtener información detallada sobre el Esquema XML, consulte Creación de formularios adaptables con el Esquema XML como modelo de formulario.
En el código siguiente, el panel SampleType
utiliza la propiedad 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>
Para una presentación no acordadana, utilice componentes de botón de formulario adaptable para agregar y quitar instancias.