Aangepaste verzendactie schrijven voor adaptieve formulieren writing-custom-submit-action-for-adaptive-forms

Van toepassing op applies-to

Deze documentatie is op AEM 6.5 LTS Forms van toepassing.

Voor de documentatie van AEM as a Cloud Service, zie AEM Forms op Cloud Service.

Voor adaptieve formulieren moeten handelingen worden verzonden om door de gebruiker opgegeven gegevens te verwerken. Een handeling Verzenden bepaalt de taak die wordt uitgevoerd voor de gegevens die u verzendt met behulp van een adaptief formulier. Adobe Experience Manager (AEM) omvat uit-van-de-doos actiesvoorleggen die douanetaken tonen u het gebruiken van de user-submitted gegevens kunt uitvoeren. U kunt bijvoorbeeld taken uitvoeren, zoals het verzenden van e-mail of het opslaan van de gegevens.

Workflow voor een handeling Verzenden workflow-for-a-submit-action

Het stroomschema geeft de workflow weer voor een handeling Verzenden die wordt geactiveerd wanneer u op de knop Submit klikt in een adaptief formulier. De bestanden in de component Bestandsbijlage worden geüpload naar de server en de formuliergegevens worden bijgewerkt met de URL's van de geüploade bestanden. Binnen de client worden de gegevens opgeslagen in de JSON-indeling. De client verzendt een Ajax-aanvraag naar een interne servlet die de opgegeven gegevens in massa neemt en deze in XML-indeling retourneert. De client sorteert deze gegevens met actievelden. De gegevens worden via een handeling Formulier verzenden verzonden naar de uiteindelijke servlet (Guide verzendt servlet). Dan, door:sturen servlet de controle aan de Submit actie. De handeling Verzenden kan het verzoek doorsturen naar een andere kiesbron of de browser omleiden naar een andere URL.

Stroomschema die het werkschema voor Submit actie afbeelden

XML-gegevensindeling xml-data-format

De XML-gegevens worden naar de servlet verzonden met behulp van de aanvraagparameter jcr:data . Verzendhandelingen hebben toegang tot de parameter om de gegevens te verwerken. In de volgende code wordt de indeling van de XML-gegevens beschreven. De velden die aan het formuliermodel zijn gebonden, worden weergegeven in de sectie afBoundData . De niet verbindende gebieden verschijnen in de afUnoundData sectie. Voor meer informatie over het formaat van het data.xml dossier, zie Inleiding aan prepopulating adaptieve vormgebieden.

<?xml ?>
<afData>
<afUnboundData>
<data>
<field1>value</field2>
<repeatablePanel>
    <field2>value</field2>
</repeatablePanel>
<repeatablePanel>
    <field2>value</field2>
</repeatablePanel>
</data>
</afUnboundData>
<afBoundData>
<!-- xml corresponding to the Form Model /XML Schema -->
</afBoundData>
</afData>

Actievelden action-fields

Een verzendactie kan verborgen inputgebieden (gebruikend de HTML inputmarkering) aan teruggegeven vormHTML toevoegen. Deze verborgen velden kunnen waarden bevatten die nodig zijn tijdens de verwerking van formulierverzendingen. Bij het verzenden van het formulier worden deze veldwaarden teruggeplaatst als aanvraagparameters die de handeling Verzenden kan gebruiken tijdens het verzenden. De invoervelden worden actievelden genoemd.

Met een handeling Verzenden die ook de tijd vastlegt die nodig is om een formulier in te vullen, kunt u bijvoorbeeld de verborgen invoervelden startTime en endTime toevoegen.

Een script kan de waarden van de velden startTime en endTime opgeven wanneer het formulier wordt gerenderd en vóór het verzenden van het formulier. Met de verzendfunctie van ActionScript kunt u deze velden vervolgens openen met behulp van aanvraagparameters en de totale tijd berekenen die nodig is om het formulier in te vullen. post.jsp

Bestandsbijlagen file-attachments

Verzendhandelingen kunnen ook de bestandsbijlagen gebruiken die u uploadt met de component Bestandsbijlage. Verzend actiemanuscripten tot deze dossiers kunnen toegang hebben gebruikend de het laten van RequestParameter API. De isFormFieldmethode van de API hulp identificeert zich of de verzoekparameter een dossier of een vormgebied is. U kunt de parameters van het Verzoek in een Submit actie herhalen om de parameters van de Bijlage van het Dossier te identificeren.

De volgende voorbeeldcode identificeert de bestandsbijlagen in de aanvraag. Daarna, leest het de gegevens in het dossier gebruikend krijg API. Ten slotte wordt een object Document gemaakt met behulp van de gegevens en toegevoegd aan een lijst.

RequestParameterMap requestParameterMap = slingRequest.getRequestParameterMap();
for (Map.Entry<String, RequestParameter[]> param : requestParameterMap.entrySet()) {
    RequestParameter rpm = param.getValue()[0];
    if(!rpm.isFormField()) {
        fileAttachments.add(new Document(rpm.get()));
    }
}

Pad doorsturen en URL omleiden forward-path-and-redirect-url

Nadat de vereiste actie is uitgevoerd, stuurt de Submit servlet de aanvraag door naar het voorwaartse pad. Een handeling gebruikt de setForwardPath API om het voorwaartse pad in te stellen in de Guide Submit servlet.

Als de handeling geen voorwaarts pad biedt, leidt de verzendserver de browser om met de Redirect URL. De auteur configureert de omleidings-URL met behulp van de configuratie Bedankt voor de pagina in het dialoogvenster Formulier bewerken. U kunt de Redirect URL ook configureren via de handeling Verzenden of de setRedirectUrl-API in het dialoogvenster Guide Verzenden. U kunt de parameters van het Verzoek die naar Redirect URL worden verzonden ook vormen gebruikend setRedirectParameters API in de Gids Submit servlet.

NOTE
Een auteur verstrekt Redirect URL (gebruikend de Dank u Configuratie van de Pagina). uit-van-de-doos verzendt Actiesgebruik Redirect URL om browser van het middel om te leiden dat de voorwaartse wegverwijzingen.
U kunt een douane schrijven voorlegt actie die een verzoek aan een middel of servlet door:sturen. Adobe raadt aan dat het script dat de verwerking van bronnen voor het voorwaartse pad uitvoert, de aanvraag omleidt naar de Redirect URL wanneer de verwerking is voltooid.

Handeling verzenden submit-action

Een verzendactie is een verkoop :Folder die het volgende omvat:

  • addfields.jsp: Dit manuscript verstrekt de actievelden die aan het dossier van HTML tijdens vertoning worden toegevoegd. Gebruik dit script om verborgen invoerparameters toe te voegen die vereist zijn tijdens verzending in het script post.POST.jsp.

  • dialog.xml: Dit manuscript is gelijkaardig aan de dialoog van de Component CQ. Het verstrekt configuratieinformatie die de auteur aanpast. De velden worden weergegeven op het tabblad Handelingen verzenden in het dialoogvenster Formulier bewerken Adaptief wanneer u de handeling Verzenden selecteert.

  • post.POST.jsp: Submit servlet roept dit manuscript met de gegevens die u en de extra gegevens in de vorige secties voorlegt. Elke vermelding van het uitvoeren van een handeling op deze pagina houdt in dat het script post.POST.jsp wordt uitgevoerd. Als u de handeling Verzenden wilt registreren met de adaptieve formulieren die u wilt weergeven in het dialoogvenster Formulier bewerken, voegt u de volgende eigenschappen toe aan de sling:Folder :

    • guideComponentType van typeKoord en waarde fd/af/components/guidesubmittype

    • guideDataModel van typeKoord dat het type van adaptieve vorm specificeert waarvoor de Submit actie van toepassing is. xfa wordt gesteund voor op XFA-Gebaseerde adaptieve vormen terwijl xsd voor op XSD-Gebaseerde adaptieve vormen wordt gesteund. basis wordt gesteund voor adaptieve vormen die geen XDP of XSD gebruiken. Voeg de corresponderende tekenreeksen toe om de handeling weer te geven op meerdere typen adaptieve formulieren. Scheid elke tekenreeks door een komma. Bijvoorbeeld, om een actie op op XFA en op XSD-Gebaseerde adaptieve vormen zichtbaar te maken, specificeer de waarden xfa en xsd respectievelijk.

    • jcr:description van typeKoord. De waarde van deze eigenschap wordt weergegeven in de actielijst Verzenden op het tabblad Handelingen verzenden van het dialoogvenster Formulier bewerken Adaptief. De acties buiten de box zijn aanwezig in de bewaarplaats van CRX bij de plaats /libs/fd/af/components/guidesubmittype.

Een aangepaste verzendhandeling maken creating-a-custom-submit-action

Voer de volgende stappen uit om een aangepaste verzendactie te maken die de gegevens opslaat in de CRX-opslagplaats en u vervolgens een e-mail stuurt. Het adaptieve formulier bevat de handeling Verzenden uit de doos Winkelinhoud (afgekeurd) die de gegevens opslaat in de CRX-opslagplaats. Bovendien verstrekt CQ a PostAPI die kan worden gebruikt om e-mails te verzenden. Alvorens de Post API te gebruiken, vormde dienst van de Post van Dag CQ door de systeemconsole. U kunt de actie Store Content (afgekeurd) opnieuw gebruiken om de gegevens in de opslagplaats op te slaan. De actie Store Content (afgekeurd) is beschikbaar op de locatie /libs/fd/af/components/guidesubmittype/store in de CRX-opslagplaats.

  1. Meld u aan bij CRXDE Lite op de URL https://<server>:<port>/crx/de/index.jsp. Creeer een knoop met het bezit verbinden :Folder en naam store_and_mail in de /apps/custom_submit_action omslag. Maak de map custom_submit_action als deze nog niet bestaat.

    Scherenshot die de verwezenlijking van een knoop met het bezit toont - noem :Folder

  2. verstrek de verplichte configuratiegebieden.

    Voeg de configuratie toe die de winkelactie vereist. Kopieer de cq:dialog knoop van de actie van de Opslag van /libs/fd/af/components/guidesubmittype/store aan de actiemap bij /apps/custom_submit_action/store_and_email.

    Schermafbeelding die het kopiëren van de dialoogknoop aan de actiemap tonen

  3. verstrek configuratiegebieden om de auteur voor e-mailconfiguratie te veroorzaken.

    Het adaptieve formulier bevat ook een e-mailactie die e-mailberichten naar gebruikers verzendt. Pas deze actie aan op basis van uw vereisten. Ga naar /libs/fd/af/components/guidesubmittype/email/dialog. Kopieer de knopen binnen cq :dialog knoop aan cq :dialog knoop van uw Voorlegging actie (https://experienceleague.adobe.com/apps/custom_submit_action/store_and_email/dialog?lang=nl).

    Aanpassen van de e-mailactie

  4. maak de actie beschikbaar in de Aangepaste Vorm geeft dialoog uit.

    Voeg de volgende eigenschappen in de store_and_email knoop toe:

    • guideComponentType van type Koord en waarde fd/af/components/guidesubmittype

    • guideDataModel van type Koord en waarde xfa, xsd, basis

    • jcr:description van type Koord en waarde Actie van de Opslag en E-mail

  5. Open een adaptief formulier. Klik uitgeven knoop naast Begin om de te openen geef dialoog van de adaptieve vormcontainer uit. De nieuwe actie wordt getoond in legt Acties Lusje voor. Het selecteren van de Opslag en E-mailActie toont de configuratie die in de dialoogdoos wordt toegevoegd.

    voorlegt de dialoog van de actieconfiguratie

  6. gebruik de actie om een taak te voltooien.

    Voeg het script post.POST.jsp toe aan uw handeling. (https://experienceleague.adobe.com/apps/custom_submit_action/store_and_mail/?lang=nl).

    Voer de handeling uit van de winkel (script post.POST.jsp). Gebruik FormsHelper.runAction(java.lang.String, java.lang.String, org.apache.sling.api.resource.Resource, org.apache.sling.api.SlingHttpServletRequest, org.apache.sling.api.SlingHttpServletResponse) API die CQ verstrekt Je code om de actie Winkel uit te voeren. Voeg de volgende code in uw JSP dossier toe:

    FormsHelper.runAction("/libs/fd/af/components/guidesubmittype/store", "post", resource, slingRequest, slingResponse);

    Om e-mail te verzenden, leest de code het e-mailadres van de ontvanger van de configuratie. Om de configuratiewaarde in het manuscript van de actie te halen, lees de eigenschappen van het huidige middel gebruikend de volgende code. Op dezelfde manier kunt u de andere configuratiedossiers lezen.

    ValueMap properties = ResourceUtil.getValueMap(resource);

    String mailTo = properties.get("mailTo");

    Tot slot gebruikt u de CQ Mail-API om de e-mail te verzenden. Gebruik de klasse SimpleEmailom het E-mailVoorwerp tot stand te brengen zoals hieronder afgebeeld:

    note note
    NOTE
    Zorg ervoor dat het JSP-bestand de naam post.POST.jsp heeft.
    code language-java
    <%@include file="/libs/fd/af/components/guidesglobal.jsp" %>
    <%@page import="com.day.cq.wcm.foundation.forms.FormsHelper,
           org.apache.sling.api.resource.ResourceUtil,
           org.apache.sling.api.resource.ValueMap,
                    com.day.cq.mailer.MessageGatewayService,
      com.day.cq.mailer.MessageGateway,
      org.apache.commons.mail.Email,
                    org.apache.commons.mail.SimpleEmail" %>
    <%@taglib prefix="sling"
                    uri="https://sling.apache.org/taglibs/sling/1.0" %>
    <%@taglib prefix="cq"
                    uri="https://www.day.com/taglibs/cq/1.0"
    %>
    <cq:defineObjects/>
    <sling:defineObjects/>
    <%
            String storeContent =
                        "/libs/fd/af/components/guidesubmittype/store";
            FormsHelper.runAction(storeContent, "post", resource,
                                    slingRequest, slingResponse);
     ValueMap props = ResourceUtil.getValueMap(resource);
     Email email = new SimpleEmail();
     String[] mailTo = props.get("mailto", new String[0]);
     email.setFrom((String)props.get("from"));
            for (String toAddr : mailTo) {
                email.addTo(toAddr);
       }
     email.setMsg((String)props.get("template"));
     email.setSubject((String)props.get("subject"));
     MessageGatewayService messageGatewayService =
                        sling.getService(MessageGatewayService.class);
     MessageGateway messageGateway =
                    messageGatewayService.getGateway(SimpleEmail.class);
     messageGateway.send(email);
    %>
    

    Selecteer de handeling in het adaptieve formulier. De actie verzendt een e-mail en slaat de gegevens op.

recommendation-more-help
51c6a92d-a39d-46d7-8e3e-2db9a31c06a2