Seções repetidas são painéis que podem ser adicionados ou removidos de forma dinâmica a um formulário.
Por exemplo, ao se candidatar a um cargo, o candidato a cargo fornece detalhes de emprego anteriores, como nome da empresa, função, projeto e outras informações. A informação de todos os empregadores requer seções diferentes, mas semelhantes. Neste cenário, o formulário relativo ao emprego fornece uma seção do empregador e também uma opção para adicionar dinamicamente mais seções. Essas seções, que são adicionadas dinamicamente, são conhecidas como seções repetidas.
Você pode usar um dos seguintes métodos para criar painéis repetíveis:
No modo de edição, selecione um painel e, em seguida, toque em . Na barra lateral, em Propriedades, ative Tornar painel repetível. Especifique valores para os campos Maximum e Minimum.
O campo Máximo especifica o número máximo de vezes que um painel pode aparecer na página. Você pode especificar -1 no campo Contagem máxima para permitir que o painel apareça infinito vezes.
O campo Mínimo especifica o número mínimo de vezes que um painel é exibido no formulário. Se a Contagem mínima for definida como zero, posteriormente, você poderá remover todas as instâncias por meio de scripts depois que a execução for concluída.
Para criar um painel não repetível, defina o valor dos campos Máximo e Mínimo como um. O layout acordeão não suporta -1 no campo Contagem máxima. Você pode especificar um número alto para dar a noção de valor infinito.
O pai do painel, que deve ser repetido, deve conter botões adicionar e excluir para gerenciar instâncias dos painéis repetíveis. Execute as seguintes etapas para inserir botões no pai e ativar scripts nos botões:
Na barra lateral, arraste e solte um componente de botão no pai do painel. Selecione o componente e toque em . As regras do botão são abertas no editor de regras.
Na janela Editor de regras, clique em Criar.
Selecione Editor visual na linha Objetos de formulário e funções.
Na área de regra, em WHEN, o estado selecionado é clicado.
Em THEN:
Selecione Editor de código na linha Objetos de formulário e funções. Clique em Editar regras e na área de código:
this.panel.instanceManager.addInstance()
this.panel.instanceManager.removeInstance(this.panel.instanceIndex)
Clique em Concluído.
Se um campo pertencer a um painel repetível, você não poderá acessá-lo diretamente usando seu nome em seus scripts. Para acessar o campo, especifique a instância repetível à qual o campo pertence usando a API instances
em InstanceManager
. A sintaxe para usar a API instances
em InstanceManager
é:
<panelName>.instanceManager.instances[<instanceNumber>].<fieldname>
Por exemplo, você cria um formulário adaptável com um painel repetível com uma caixa de texto. Ao preencher previamente o formulário com três caixas de texto repetíveis, é necessário o xml abaixo:
<panel1><textbox1>AA1</panel1></textbox1>
<panel1><textbox1>AA2</panel1></textbox1>
<panel1><textbox1>AA3</panel1></textbox1>
Para ler dados AA1, especifique:
Panel1.instanceManager.instances[0].textbox.value
Para ler dados AA2, especifique:
Panel1.instanceManager.instances[1].textbox.value
Para obter mais informações, consulte: Classe: Instâncias do InstanceManager#em Referência da API Java da AEM Forms.
Quando todas as instâncias de um painel forem removidas de um formulário adaptável, para adicionar uma instância do painel removido, use a sintaxe _panelName para capturar o Gerenciador de instâncias do painel e use a API addInstance do Gerenciador de instâncias para adicionar a instância excluída. Por exemplo, _panelName.addInstance(). Ela adiciona uma instância do painel removido.
Um painel tem várias opções de layouts. A opção de design Layout para o acordian oferece suporte imediato a painéis repetíveis. Execute as seguintes etapas para reproduzir o painel com a opção Layout para o design do acordian:
No pai do painel a ser repetido, toque . É possível ver as propriedades na barra lateral. Na lista suspensa Layout, selecione Acordeão.
Em um painel, que deve ser repetido, toque . É possível ver as propriedades do painel na barra lateral. Ative a guia Tornar painel repetível e especifique o valor para os campos Máximo e Mínimo.
Agora, você pode usar os botões de adição (+) e exclusão ( ) para adicionar e remover os painéis.
O subformulário repetível é semelhante aos painéis repetíveis no Adaptive Forms. No AEM Forms Designer, execute as seguintes etapas para criar um subformulário repetitivo:
O arquivo .zip anexado contém um subformulário repetitivo de amostra.
Você pode criar painéis repetíveis a partir de um Schema XML e da propriedade minOccours & maxOccurs de qualquer elemento de tipo complexo. Para obter informações detalhadas sobre o Schema XML, consulte Criar formulários adaptáveis usando o Schema XML como Modelo de formulário.
No código a seguir, o painel SampleType
usa a propriedade 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 o layout não-acordiano, use os componentes do botão de formulário adaptável para adicionar e remover instâncias.