Durchführen der Formularübermittlung
- Gilt für:
- Experience Manager 6.4
- Experience Manager 6.5
Erstellt für:
- Experte
- Entwickler
AEM Forms 6.5
In diesem Teil wird ein einfaches Servlet erstellt, das auf AEM Publish ausgeführt wird, um die Übermittlung von HTML5-Formularen durchzuführen. Dieses Servlet sendet eine HTTP-POST-Anfrage an ein Servlet, das in einer AEM-Autoreninstanz ausgeführt wird, die für das Speichern der übermittelten Daten als nt:file
-Knoten im AEM Author-Repository verantwortlich ist.
Im Folgenden finden Sie den Code des Servlets, das die Übermittlung des HTML5-Formulars durchführt. In diesem Servlet machen wir einen POST-Aufruf an ein Servlet, das auf /bin/startworkflow in einer AEM-Autoreninstanz gemountet ist. Dieses Servlet speichert die Formulardaten im Repository der AEM-Authoring-Instanz.
AEM Publish-Servlet
Mit dem folgenden Code wird die Übermittlung des HTML5-Formulars durchgeführt. Dieser Code wird in der Veröffentlichungsinstanz ausgeführt.
package com.aemforms.mobileforms.core.servlets;
import com.aemforms.mobileforms.core.configuration.service.AemServerCredentialsConfigurationService;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.apache.sling.servlets.annotations.SlingServletResourceTypes;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.Servlet;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Serializable;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
@Component(service={Servlet.class}, property={"sling.servlet.methods=post", "sling.servlet.paths=/bin/handleformsubmission"})
public class HandleFormSubmission extends SlingAllMethodsServlet implements Serializable {
private static final long serialVersionUID = 1L;
private final transient Logger logger = LoggerFactory.getLogger(this.getClass());
@Reference
AemServerCredentialsConfigurationService aemServerCredentialsConfigurationService;
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) {
logger.debug("In do POST of bin/handleformsubmission");
ByteArrayOutputStream result = new ByteArrayOutputStream();
try {
ServletInputStream is = request.getInputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) != -1) {
result.write(buffer, 0, length);
}
logger.debug(result.toString(StandardCharsets.UTF_8.name()));
} catch (IOException e1) {
logger.error("An error occurred", e1);
}
String postURL = aemServerCredentialsConfigurationService.getWorkflowServer();
logger.debug("The url to invoke workflow is "+postURL);
HttpPost postReq = new HttpPost(postURL);
// This is the base64 encoding of the admin credentials. This call should be made over HTTPS in production scenarios to avoid leaking credentials.
String userName = aemServerCredentialsConfigurationService.getUserName();
String password = aemServerCredentialsConfigurationService.getPassword();
String credential = userName+":"+password;
String encodedString = Base64.getEncoder().encodeToString(credential.getBytes());
postReq.addHeader("Authorization", "Basic "+encodedString);
System.out.println("The encoded string is "+"Basic "+encodedString);
CloseableHttpClient httpClient = HttpClients.createDefault();
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
logger.debug("added url parameters");
try {
urlParameters.add(new BasicNameValuePair("xmlData", result.toString(StandardCharsets.UTF_8.name())));
postReq.setEntity(new UrlEncodedFormEntity(urlParameters));
HttpResponse httpResponse = httpClient.execute(postReq);
logger.debug("Sent request to author instance");
String startWorkflowResponse = EntityUtils.toString(httpResponse.getEntity());
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
out.write(startWorkflowResponse);
} catch (IOException e) {
logger.error("An error occurred", e);
}
}
}
Nächste Schritte
Experience Manager
- Überblick
- Best Practices, die zu befolgen sind
- Einrichten der OKTA-Authentifizierung mit AEM Author
- Erstellen Ihres ersten adaptiven Formulars
- 1 – Einführung und Einrichtung
- 2 – Erstellen einer adaptiven Formularvorlage
- 3 – Erstellen von Formularfragmenten
- 4 – Erstellen eines adaptiven Formulars
- 5 – Konfigurieren des Stammbereichs und Hinzufügen untergeordneter Bedienfelder
- 6 – Hinzufügen von Komponenten zum Personen-Panel
- 7 – Hinzufügen einer Tabelle zum Einkommensbereich
- 8 – Konfigurieren des Asset-Panels
- 9 – Verwendung von benutzerdefinierten Funktionen und Code-Editor
- Handhabung von Formularübermittlungen
- Erstellen eines Prüfung-Workflows
- Konfigurieren des adaptiven Formulars zur Auslösung des Workflows
- Dankesseite anzeigen
- Danke-Seite anpassen
- Übermittlung an externen Endpunkt
- Senden von E-Mails
- Arbeitsablauf für gebührenpflichtige Zeitüberschreitung bei Anfrage
- Konfigurieren des adaptiven Formulars zum Auslösen von AEM Workflow – Video
- Anpassen der Benachrichtigung „Aufgabe zuweisen“
- Nützliche Integrationen
- Erstellen eines OSGi-Bundles
- Adaptive Formulare
- Installieren von AEM Forms unter Windows
- Installieren von 32-Bit-Paketen unter Linux
- Vorbefüllungsdienst in adaptiven Formularen
- Adaptives Formular mithilfe von Abfrageparametern ausfüllen
- QR-Code in AEM Forms
- Benutzerdefiniertes Senden in adaptiven Formularen
- Captcha in adaptiven Formularen
- Benutzerdefinierte Funktionen im Regeleditor
- Einbetten des adaptiven Formulars in eine Webseite
- Erstellen eines Zeichenfolgen-Array
- Element-Ladepfad in AEM Forms
- Verwenden von eingestellten Werten in XML im OSGI-Workflow
- Verwenden von eingestellten Werten in JSON im OSGI-Workflow
- Senden von E-Mail-Komponente im AEM Forms Workflow
- Generieren von DocumentOfRecord mithilfe der API
- Anzeigen von Inline-Bildern
- DAM-Bilder inline anzeigen
- Verwenden der GeoLocation-API
- Verwenden von Transaktionsberichten
- Integration von Benutzerprofildaten in AEM Forms
- Microsoft Dynamics mit AEM Forms
- Verbesserungen beim Regeleditor
- Einschränken des Zugriffs auf den Regeleditor
- Verbesserungen am Design-Editor
- Verbesserungen am Formulareditor
- Automatisches Testen von adaptiven Formularen
- Automatisches Testen von adaptiven Formularen
- Integrieren von LDAP mit AEM Forms
- Verwenden des Dienstbenutzenden in AEM Forms
- Tagging und Speichern von DoR bei der Übermittlung adaptiver Formulare
- Auffüllen der Tabelle mit den Ergebnissen aus dem Aufruf des Formulardatenmodell-Dienstes
- Erfassen von Workflow-Kommentaren
- Speichern gesendeter Formulardaten in DB
- Formularanlage in DB einfügen
- Datenquellkonfiguration ändern
- Überschreiben der Eigenschaften des Formulardatenmodells
- Formulardatenmodelldienst in AEM 6.4 Workflow
- Umgang mit Fehlermeldungen im Schritt „Formulardatenmodell-Service“
- Formulardatenmodelldienst in AEM 6.5.1 Workflow
- Formulardatenmodelle ohne Datenquelle
- Berechnetes Formulardatenmodellelement
- Einrichten von JDBC-Datenquellen in AEM Forms
- JDBC-basiertes Formulardatenmodell
- Erstellen von Verknüpfungen zwischen zwei Entitäten im Formulardatenmodell
- Verwenden des Aufrufdienstes des Formulardatenmodells im Regeleditor
- Posten von Binärdaten an AEM DAM mithilfe des Formulardatenmodells
- Erstellen von wiederverwendbaren Workflow-Modellen
- Benutzerdefinierter Prozessschritt AEM-Workflow
- Vorausfüllen von HTML5 Formularen
- Formulardatenmodell mit Salesforce
- Dynamisches Hinzufügen von Elementen zur Auswahlkomponente
- Ausfüllen eines PDF-Formulars mit ChatBot
- Auf Kernkomponenten basierende Formulare
- Auswählen und Zusammenführen von DAM-Ordnerinhalt
- Vorausfüllen des adaptiven Formulars mithilfe des Formulardatenmodells
- Tipps und Tricks zur Benutzeroberfläche
- Anpassen des Posteingangs
- E-Mail-Formularanhänge
- Vorausfüllen von Formularen mit Daten und Anhängen
- Speichern und Abrufen adaptiver Formulare
- 1 – Einführung
- 2 – Konfigurieren einer Datenquelle
- 3 – Speichern von Formularanhängen
- 4 – Speichern von Formulardaten
- 5 – Erstellen eines Servlets
- 6 – Rendern eines Formulars mit gespeicherten Daten
- 7 – Erstellen einer Client-Bibliothek
- 8 – Integrieren mit dem OTP-Dienst
- 9 – Erstellen des Hauptformulars
- 10 – Erstellen des MyAccount-Formulars
- 11 – Bereitstellen des Beispiels
- Importieren von Daten aus der PDF-Datei
- Exportieren gesendeter Daten im CSV-Format
- HTML5-Formulare
- AEM Forms und Acrobat Sign
- Einführung
- Einrichten von SSL
- Erstellen einer Acrobat Sign-API-Anwendung
- Erstellen einer Acrobat Sign-Cloud-Konfiguration
- Erstellen eines Workflows, um Dokument zur Unterschrift zu senden
- Erstellen und Konfigurieren eines adaptiven Formulars
- Konfigurieren eines adaptiven Formulars für einzelne Unterzeichnende
- Konfigurieren eines adaptiven Formulars für zwei Unterzeichnende
- Konfigurieren des Dienstes für die automatische Formularkonversion
- Konvertieren eines PDF-Formulars in ein adaptives Formular
- Konfigurieren eines konvertierten adaptiven Formulars
- Verwenden von XDP-Vorlagen mit Acrobat Sign
- Verwenden von Hilfsmethoden von Acrobat Sign
- Signieren mehrerer Formulare
- 1 – Einführung
- 2 – Konfigurieren einer Datenquelle
- 3 – Erstellen eines OSGi-Dienstes
- 4 – Erstellen eines Haupt-Workflows
- 5 – Aktualisieren des Signaturstatus-Workflows
- 6 – Anpassen der Zusammenfassungskomponente
- 7 – Erstellen einer Client-Bibliothek
- 8 – Erstellen einer Formularvorlage
- 9 – Erstellen des ersten Formulars
- 10 – Erstellen von zu signierenden Formularen
- 11 – Testen der Lösung
- Benutzerdefinierte Workflow-Schritte
- Benutzerdefinierte Workflow-Komponente
- Variablen im AEM-Workflow
- Überprüfen der Formulardaten
- Speichern und Abrufen von Formulardaten in MySQL DB
- Auslösen eines AEM-Workflows bei der Übermittlung eines PDF-Formulars
- Auslösen eines AEM-Workflows bei der Übermittlung eines mobilen Formulars
- Abfragen von Formularübermittlungen
- Auflisten benutzerdefinierter Asset-Typen im Formularportal
- AEM Forms mit Marketo
- AEM Forms mit Adobe Campaign Standard
- Begrüßungs-Kit
- Headless-Forms-API
- React-App mit Forms und Acrobat Sign
- Document Services
- Arten von PDF-Formularen
- Einbetten von PDFs in adaptive Formulare
- PDFs in Karussellkomponenten
- Verwenden des Assembler-Dienstes in AEM Forms
- XDP-Zuordnung mit Assembler-Dienst
- Verwenden vom überwachten Ordner in AEM Forms
- Verwenden des Barcode-Dienstes in AEM Forms
- Verwenden des PDFG-Dienstes in AEM Forms
- Verschlüsseln einer PDF mit einem Berechtigungskennwort
- Verwenden von Output und Forms Service in AEM Forms
- Verwenden von xdp-Fragmenten im Output-Dienst
- ECMA-Skript zum Generieren von PDF-Dateien mit Fragmenten
- Erstellen mehrerer PDFs aus einer Datendatei
- Generieren eines PDFs bei Übermittlung mobiler Formulare
- Generieren einer PDF bei auf Kernkomponente basierenden Formularübermittlungen
- Generieren eines interaktiven PDFs aus mobilen Formularen
- Generieren eines interaktiven DoR aus adaptiven Formularen
- Konfigurieren von Reader Extensions-Berechtigungen
- Anwenden von Verwendungsrechten auf PDF bei XDP-Wiedergabe
- Anwenden von Nutzungsrechten auf hochgeladene PDF-Dateien
- Zertifizieren von Dokumenten
- Zusammenführen von Formularanlagen
- Nützliche Dienstprogrammdienste
- Forms Designer
- AEM Forms Workbench
- Interaktive Kommunikationen für Print-Kanal
- 1 – Einführung
- 2 – Einrichten von Tomcat
- 3 – Erstellen einer Datenquelle
- 4 – Erstellen eines Formulardatenmodells
- 5 – Erstellen eines XDP-Layouts mit Forms Designer
- 6 – Erstellen eines Dokumentfragments
- 7 – Erstellen eines Druckkanaldokuments
- 8 – Hinzufügen von Inhalten zu Zielbereichen
- 9 – Konfigurieren eines Liniendiagramms
- 10 – Hinzufügen einer Tabelle zum Druckkanal
- 11 – Verwenden eines überwachten Ordners zum Generieren von Dokumenten
- 12 – Öffnen der Agent-Benutzeroberfläche bei der Formularübermittlung
- Speichern und Abrufen von Briefentwürfen
- Interaktive Kommunikationen
- Verwenden der Batch-API
- Diagramme für mehrere Serien
- Generieren von Druckkanaldokumenten aus gesendeten Daten
- Verwenden von Reducer-Funktionen
- Zwei-Spalten-Layout in Druckkanaldokumenten
- Verwenden der Tabellenkomponente in einem Druckkanaldokument von AEM Forms
- Generieren eines interaktiven Kommunikationsdokuments für den Druckkanal unter Verwendung von überwachten Ordnern
- Anpassen des Texteditors
- Interaktive Kommunikationen für Web-Kanal
- 1 – Einführung
- 2 – Einrichten von Tomcat
- 3 – Erstellen einer Datenquelle
- 4 – Erstellen eines Formulardatenmodells
- 5 – Erstellen einer Web-Kanal-Dokumentvorlage
- 6 – Erstellen eines Dokumentfragments
- 7 – Erstellen eines Dokuments zur interaktiven Kommunikation
- 8 – Hinzufügen von Text und Bildern
- 9 – Konfigurieren eines Liniendiagramms
- 10 – Konfigurieren einer Tabelle
- 11 – Konfigurieren eines Spaltendiagramms
- 12 – Konfigurieren eines Tortendiagramms
- 13 – Bereitstellung des Web-Kanal-Dokuments
- E-Mail-Versand des Web-Kanaldokuments
- Fehlerbehebung
- Dokumentendienste: Schritte zur Behebung von DDX-bezogenen Problemen
- Dokumentendienste: Schritte zur Fehlerbehebung bei PDFA-Konversionsproblemen
- Dokumentendienste: Debugging von Schriftartenproblemen für Forms und Output Service
- Dokumentendienste: Einbetten von Schriftarten für Forms und Output Service
- Dokumentendienste: Aktivieren der Leistungsprotokollierung zum Debuggen von Forms und Output Service
- Dokumentendienste: Erhöhen des Aries-Transaktions-Timeouts für die Konversion großer Dateien
- Dokumentendienste: Ausführen von Belastungstests mit FormsIVS und OutputIVS
- Dokumentendienste: Aktualisieren von benutzerdefinierten XDPs und Datendateien in FormsIVS und OutputIVS
- Dokumentendienste: Schritte zum Aktivieren der ausführlichen ORB-Verfolgung
- Dokumentendienste: Schritte zum Anpassen der BMC-Poolgröße für XMLFormService Teil 1
- Dokumentendienste: Schritte zum Anpassen der BMC-Poolgröße für XMLFormService Teil 2
- Dokumentendienste: Schritte zum Anpassen von Parametern auf der JMX-Konsole
- Aktivieren der Zusammenführung großer XML-Datendateien mit einer Vorlage
- PDFG: Ändern der Transaktions-Timeouts in PDFG
- PDFG: Aktualisieren des CORBA-Timeouts in PDFG
- PDFG: Aktualisieren der Timeouts in PDFG
- PDFG: Schritte zum Hinzufügen von PDFG-Benutzenden auf Windows Server 2016
- PDFG: Schritte zum Überprüfen und Installieren von 32-Bit-Bibliotheken und deren Abhängigkeiten
- PDFG: Schritte zum Überprüfen der Ordnerberechtigungen auf Windows Server 2016
- PDFG: Schritte zum Aktivieren von Strace auf Unix
- PDFG: Schritte zum Installieren erforderlicher verteilbarer 32-Bit-Dateien von Microsoft Visual C++
- PDFG: Schritte zum Ausführen und Interpretieren der Ausgabe des Systembereitschafts-Tools
- PDFG: Schritte zur Behebung Akrobat-spezifischer Probleme
- PDFG: Schritte zur Fehlerbehebung bei HtmltoPDF-Problemen unter Windows
- PDFG: Schritte zur Fehlerbehebung bei HtmltoPDF-spezifischen Problemen unter Unix (PhantomJS)
- PDFG: Schritte zur Fehlerbehebung bei HtmltoPDF-spezifischen Problemen bei Unix (WebKit-Konversion)
- PDFG: Schritte zur Fehlerbehebung bei der PDFG-Konversion für mehrere Benutzende unter Unix
- PDFG: Schritte zur Fehlerbehebung bei der PDFG-Konversion für mehrere Benutzende unter Windows
- PDFG: Schritte zur Fehlerbehebung bei OpenOffice-spezifischen Problemen unter Unix
- PDFG: Schritte zur Fehlerbehebung bei OpenOffice-spezifischen Problemen unter Windows
- Dokumentensicherheit: Anwenden von Richtlinien, die mit dem Dokumentensicherheitsmodul in Acrobat erstellt wurden
- User Management: Hinzufügen von Benutzenden oder Gruppen in AEM Forms für JEE
- User Management: Erhöhen des UM-Sitzungs-Timeouts
- Workbench: Verbinden von Workbench mit https
- Workbench: Erfassen von Workbench-Protokollen über das Hilfemenü
- Workbench: Aktivieren der Debug-Ausgabe für Workbench
- Workbench: Anpassen von Workbench-Speicherparametern
- Workbench: Anpassen der Leistungsparameter von Workbench
- Designer: Abhängigkeit von Designer auf C++ Redistributable
- Designer: Aktivieren der HTML-Vorschau
- Designer: Aktivieren der PDF-Vorschau
- Designer: Installieren von Designer-Patches
- JEE Foundation: Ändern des Werts der Entropie
- JEE Foundation: Ändern des Transaktions-Timeouts jedes Dienstes in AEM Forms für JEE
- JEE Foundation: Bereinigen von Prozessdatensätzen in der Job Manager-Tabelle
- JEE Foundation: Ausführen der Prozessbereinigung über die Befehlszeile
- JEE Foundation: Schritte beim manuellen Bootstrapping
- JEE Foundation: Schritte zum Erfassen von Debugging-Protokollen für mobile Formulare
- JEE Foundation: Schritte zum Abmildern von ForcedDisconnectException
- Allgemein: Hinzufügen von Verwaltungsbenutzenden für die JBoss Admin Console
- Allgemein: Erfassen von HAR-Protokollen
- Allgemein: Erfassen von Heap-Dumps einer JVM auf einem Unix-Server
- Allgemein: Erfassen von Heap-Dumps einer JVM auf einem Windows-Server
- Allgemein: Erfassen von Netzwerkprotokollen
- Allgemein: Erfassen von Thread-Dumps einer JVM auf einem Unix-Server
- Allgemein: Erfassen von Thread-Dumos einer JVM auf einem Windows-Server
- Allgemein: Erstellen eines selbstsignierten Zertifikats
- Allgemein: Durchführen eines Webservice-Aufrufs über das HTML5-Formular
- Allgemein: Schritte zum Aktivieren der Debug-Protokollierung für alle Klassen in OSGI für AEM Forms
- Allgemein: Schritte zum Aktivieren der Debug-Protokollierung für alle Klassen im JBOSS Application Server
- Allgemein: Schritte zum Aktivieren der Debug-Protokollierung für alle Klassen im Websphere Application Server
- Allgemein: Schritte zum Aktivieren von SSL für OSGi für AEM Forms
- Allgemein: Schritte zum Verschlüsseln des KeyStore-Kennworts für die Verwendung in lc_turnkey.xml
- Allgemein: Schritte zum Zurücksetzen des Standardkennworts für Benutzende in AEM Forms für JEE
- Allgemein: Schritte zum Zurücksetzen des Standardkennworts für Benutzende in AEM Forms auf OSGi
- Allgemein: Schritte zum Einrichten von Gemfire-Locators in einem Cluster und zum Ausführen der entsprechenden Konfiguration