Criação de formulários com seções repetíveis

As 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. Nesse cenário, o formulário de 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:

Uso do Gerenciador de instâncias por scripts 

  1. No modo de edição, selecione um painel e toque em cmppr. Na barra lateral, em Propriedades, ative Tornar o painel repetível. Especifique valores para os campos Máximo e Mínimo.

    O campo Maximum 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 por um número infinito de vezes.

    O campo Minimum especifica o número mínimo de vezes que um painel é exibido no formulário. Se você definir o campo A contagem mínima como zero, posteriormente, será possível remover todas as instâncias por meio de scripts após a conclusão da renderização.

    OBSERVAÇÃO

    Para criar um painel não repetível, defina o valor dos campos Máximo e Mínimo como um. O layout da opção não suporta -1 no campo Contagem máxima . Você pode especificar um número alto para fornecer a noção de valor infinito.

  2. 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:

    1. Na barra lateral, arraste e solte um componente de botão no pai do painel. Selecione o componente e toque em edit-rules. As regras do botão são abertas no editor de regras.

    2. Na janela Editor de regras, clique em Criar.

      Selecione Visual Editor na linha Objetos de formulário e Funções.

      1. Na área de regras, em WHEN, selecione o estado é clicado.

      2. Em THEN:

        • Para criar um botão Adicionar painel, selecione Adicionar Instância e arraste e solte o painel usando painel lateral de alternância ou selecione-o usando Solte o objeto ou selecione-o aqui.
        • Para criar um botão Excluir painel, selecione Remover instância e arraste e solte o painel usando painel lateral de alternância ou selecione-o usando Solte o objeto ou selecione-o aqui.

      Selecione Editor de código na linha Objetos de formulário e Funções. Clique em Editar regras e na área de código:

      • Para criar um botão adicionar painel, especifique this.panel.instanceManager.addInstance()
      • Para criar um botão Excluir painel, especifique this.panel.instanceManager.removeInstance(this.panel.instanceIndex)

      Clique em Concluído.

      OBSERVAÇÃO

      Se um campo pertencer a um painel repetível, não será possível 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: InstanceManager#instances em Referência da API Java do AEM Forms.

      OBSERVAÇÃO

      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(). Ele adiciona uma instância do painel removido.

Uso do layout de opção para o painel pai  

Um painel tem várias opções de layouts. A opção Layout for acordian design tem suporte pronto para uso para painéis repetíveis. Execute as seguintes etapas para reproduzir o painel com Layout para opção de design do acordeão:

  1. No pai do painel a ser repetido, toque em cmppr. Você pode ver as propriedades na barra lateral. Na lista suspensa Layout, selecione Acordeão.

  2. Em um painel, que deve ser repetido, toque em cmppr. É possível ver as propriedades do painel na barra lateral. Ative a guia Tornar o 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 ( delete-panel) para adicionar e remover os painéis.

Uso de subformulários repetitivos do Modelo de formulário (XDP/XSD)

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:

  1. Na paleta Hierarquia, selecione o subformulário pai daquele que você deseja repetir.
  2. Na paleta Objeto, clique na guia Subformulário e selecione Continuado na lista Conteúdo.
  3. Selecione o subformulário para repetir.
  4. Na paleta Objeto, clique na guia Subformulário e selecione Posicionado ou Continuado na lista Conteúdo.
  5. Clique na guia Vínculo e selecione Repetir subformulário para cada item de dados.
  6. Para especificar o número mínimo de repetições, selecione Contagem mín. e insira o número na caixa associada. Se esta opção estiver configurada como 0 e nenhum dado for fornecido para os objetos no subformulário no momento da incorporação de dados, o subformulário não é disposto quando o formulário é renderizado.
  7. Para especificar o número máximo de repetições do subformulário, selecione Máx. e insira o número na caixa associada. Se um valor não for especificado na caixa Máx., o número de repetições do subformulário será ilimitado.
  8. Para especificar um número definido de repetições de subformulários, independentemente da quantidade de dados, selecione Contagem inicial e digite o número na caixa correspondente. Se você selecionar essa opção e nenhum dado estiver disponível ou se houver uma quantidade inferior de dados em comparação ao valor especificado em Contagem inicial, as instâncias vazias do subformulários ainda serão posicionadas.
  9. Adicione dois botões no subformulário pai - um para adicionar a instância e outro para excluir a instância do subformulário repetível. Para etapas detalhadas, consulte Criar uma ação.
  10. Agora, vincule o Modelo de formulário ao formulário adaptável. Para etapas detalhadas, consulte Criar um formulário adaptável com base em um template.
  11. Use os botões criados na etapa 9 para adicionar e remover subformulários.

O arquivo .zip anexado contém um subformulário repetitivo de amostra.

Obter arquivo

Usando configurações de repetição de um Esquema XML (XSD)

Você pode criar painéis repetíveis a partir de um Esquema XML e da propriedade minOccours & maxOccurs de qualquer elemento de tipo complexo. Para obter informações detalhadas sobre o Esquema XML, consulte Criar formulários adaptáveis usando o Esquema XML como Modelo de Formulário.

No código a seguir, o painel SampleTypeusa 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>
OBSERVAÇÃO

Para layout não-acordeão, use componentes de botão de formulário adaptáveis para adicionar e remover instâncias.

Nesta página