Erstellen eines benutzerdefinierten Sendedienstes
AEM Forms bietet eine Reihe von vorkonfigurierten Übermittlungsoptionen, die für die meisten Anwendungsfälle geeignet sind.Zusätzlich zu diesen vordefinierten Übermittlungsaktionen können Sie mit AEM Forms einen eigenen benutzerdefinierten Übermittlungs-Handler schreiben, um die Formularübermittlung gemäß Ihren Anforderungen zu verarbeiten.
Zum Erstellen eines benutzerdefinierten Sendedienstes wurden die folgenden Schritte ausgeführt.
Erstellen eines AEM-Projekts
Wenn Sie bereits über ein AEM Forms as a Cloud Service-Projekt verfügen, können Sie sofort mit der Erstellung eines benutzerdefinierten Sendedienstes beginnen.
- Erstellen Sie auf Laufwerk „C:“ einen Ordner namens „cloudmanager“.
- Navigieren Sie zu diesem neu erstellten Ordner.
- Kopieren Sie den Inhalt dieser Textdatei und fügen Sie ihn in die Eingabeaufforderung ein.Je nach (neuester Version) müssen Sie ArchetypeVersion=41 . Zum Zeitpunkt der Erstellung dieses Artikels war „41“ die neueste Version.
- Führen Sie den Befehl aus, indem Sie die Eingabetaste drücken.Wenn alles ordnungsgemäß verläuft, sollte die Erfolgsmeldung Build angezeigt werden.
Schreiben des benutzerdefinierten Sendediensts Write-the-custom-submit-service
Starten Sie IntelliJ und öffnen Sie das AEM-Projekt. Erstellen Sie eine neue Java-Klasse mit dem Namen HandleRegistrationFormSubmission, wie im folgenden Screenshot gezeigt
Der folgende Code wurde zur Implementierung des Dienstes geschrieben:
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;
}
}
Erstellen eines CRX-Knotens unter „apps“
Erweitern Sie den Knoten ui.apps und erstellen Sie ein neues Paket mit dem Namen HandleRegistrationFormSubmission unter dem Knoten apps , wie im folgenden Screenshot gezeigt
Erstellen Sie unter „HandleRegistrationFormSubmissioneine Datei mit dem Namen .content.xml. Kopieren Sie den folgenden Code und fügen Sie ihn in die Datei „.content.xml“ ein.
<?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"/>
Der Wert des submitService-Elements muss mit serviceName = “Core Custom AF Submit” in der FormSubmitActionService-Implementierung übereinstimmen.
Bereitstellen des Codes für Ihre lokale AEM Forms-Instanz
Bevor Sie die Änderungen an das Cloud Manager-Repository pushen, wird empfohlen, den Code in Ihrer lokalen Cloud-fähigen Autoreninstanz bereitzustellen, um den Code zu testen. Stellen Sie sicher, dass die Autoreninstanz ausgeführt wird.
Um den Code in Ihrer Cloud-fähigen Autoreninstanz bereitzustellen, navigieren Sie zum Stammordner Ihres AEM-Projekts und führen Sie den folgenden Befehl aus
mvn clean install -PautoInstallSinglePackage
Dadurch wird der Code als einzelnes Paket in Ihrer Autoreninstanz bereitgestellt.
Übertragen des Codes an Cloud Manager und Bereitstellen des Codes
Nachdem Sie den Code auf Ihrer lokalen Instanz überprüft haben, pushen Sie den Code an Ihre Cloud-Instanz.
Übertragen Sie die Änderungen an Ihr lokales Git-Repository und dann an das Cloud Manager-Repository. Weitere Informationen finden Sie unter Git-Einrichtung, Pushen eines AEM-Projekts in das Cloud Manager-Repository und Bereitstellen in der Entwicklungsumgebung.
Nachdem die Pipeline erfolgreich ausgeführt wurde, sollten Sie in der Lage sein, die Sendeaktion Ihres Formulars mit dem benutzerdefinierten Sende-Handler zu verknüpfen, wie im folgenden Screenshot gezeigt
Nächste Schritte
Anzeigen der benutzerdefinierten Antwort in Ihrer React-App