Criação de envio personalizado

O AEM Forms fornece várias opções de envio prontas para uso que satisfazem a maioria dos casos de uso. Além dessas ações de envio predefinidas, o AEM Forms permite que você escreva seu próprio manipulador de envio personalizado para processar o envio do formulário de acordo com suas necessidades.

Para escrever um serviço de envio personalizado, as seguintes etapas foram seguidas

Criar projeto AEM

Se você já tiver um as a Cloud Service AEM Forms existente, vá para a gravação do serviço de envio personalizado

  • Crie uma pasta chamada cloudmanager na unidade c.
  • Navegar até esta pasta recém-criada
  • Copie e cole o conteúdo de este arquivo de texto na janela de prompt de comando. Talvez seja necessário alterar DarchetypeVersion=41, dependendo da versão mais recente. No momento em que este artigo foi escrito, a última versão era a 41.
  • Execute o comando pressionando a tecla Enter. Se tudo correr corretamente, você verá a mensagem de sucesso da build.

Escrever o serviço de envio personalizado Write-the-custom-submit-service

Inicie o IntelliJ e abra o projeto AEM. Crie uma nova classe java chamada HandleRegistrationFormSubmission conforme mostrado na captura de tela abaixo
custom-submit-service

O código a seguir foi gravado para implementar o serviço

package com.aem.bankingapplication.core;
import java.util.HashMap;
import java.util.Map;
import com.google.gson.Gson;
import org.osgi.service.component.annotations.Component;
import com.adobe.aemds.guide.model.FormSubmitInfo;
import com.adobe.aemds.guide.service.FormSubmitActionService;
import com.adobe.aemds.guide.utils.GuideConstants;
import com.google.gson.JsonObject;
import org.slf4j.*;

@Component(
        service=FormSubmitActionService.class,
        immediate = true
)
public class HandleRegistrationFormSubmission implements FormSubmitActionService {
    private static final String serviceName = "Core Custom AF Submit";
    private static Logger logger = LoggerFactory.getLogger(HandleRegistrationFormSubmission.class);



    @Override
    public String getServiceName() {
        return serviceName;
    }

    @Override
    public Map<String, Object> submit(FormSubmitInfo formSubmitInfo) {
        logger.error("in my custom submit service");
        Map<String, Object> result = new HashMap<>();
        logger.error("in my custom submit service");
        String data = formSubmitInfo.getData();
        JsonObject formData = new Gson().fromJson(data,JsonObject.class);
        logger.error("The form data is "+formData);
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("firstName",formData.get("firstName").getAsString());
        jsonObject.addProperty("lastName",formData.get("lastName").getAsString());
        result.put(GuideConstants.FORM_SUBMISSION_COMPLETE, Boolean.TRUE);
        result.put("json",jsonObject.toString());
        return result;
    }

}

Crie um nó crx em aplicativos

Expanda o nó ui.apps e crie um novo pacote chamado HandleRegistrationFormSubmission no nó apps, como mostrado na captura de tela abaixo
crx-node
Crie um arquivo chamado .content.xml em HandleRegistrationFormSubmission. Copie e cole o seguinte código no arquivo .content.xml

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
    jcr:description="Handle Registration Form Submission"
    jcr:primaryType="sling:Folder"
    guideComponentType="fd/af/components/guidesubmittype"
    guideDataModel="xfa,xsd,basic"
    submitService="Core Custom AF Submit"/>

O valor do elemento submitService deve corresponder ao serviceName = "Envio de AF personalizado principal" na implementação de FormSubmitActionService.

Implante o código na instância local do AEM Forms

Antes de enviar as alterações para o repositório do Cloud Manager, é recomendável implantar o código na instância do autor local pronta para nuvem para testar o código. Verifique se a instância do autor está em execução.
Para implantar o código na instância do autor pronta para nuvem, navegue até a pasta raiz do projeto AEM e execute o seguinte comando

mvn clean install -PautoInstallSinglePackage

Isso implantará o código como um único pacote na instância do autor

Envie o código ao Cloud Manager e Implante o código

Depois de verificar o código na instância local, envie o código para a instância da nuvem.
Envie as alterações para o repositório Git local e, em seguida, para o repositório do cloud manager. Você pode consultar os artigos sobre configuração do Git, envio do projeto AEM para o repositório do Cloud Manager e implantação no ambiente de desenvolvimento.

Depois que o pipeline for executado com sucesso, você poderá associar a ação de envio do seu formulário ao manipulador de envio personalizado, conforme mostrado na captura de tela abaixo
ação-envio

Próximas etapas

Exibir a resposta personalizada no aplicativo react

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69