Een aangepaste verzendactie maken voor Adaptieve Forms writing-custom-submit-action-for-adaptive-forms

Versie
Artikelkoppeling
AEM 6,5
klik hier
AEM as a Cloud Service
Dit artikel

Een adaptief formulier biedt meerdere OTB-acties (Verzenden buiten de box). In een handeling Verzenden worden de details opgegeven van de handelingen die moeten worden uitgevoerd op de gegevens die via het adaptieve formulier zijn verzameld. Bijvoorbeeld, verzendend gegevens over een e-mail.

U kunt een douane creëren legt Actie voor om functionaliteit toe te voegen niet inbegrepen in uit-van-de-doos Actiesof niet gesteund via één enkele OTB legt Actie voor. Bijvoorbeeld het verzenden van gegevens naar een werkstroom, het opslaan van de gegevens in een gegevensopslag, het verzenden van e-mailbericht naar de persoon die het formulier verzendt, en het verzenden van een e-mail naar de persoon die verantwoordelijk is voor de verwerking van het ingediende formulier voor goedkeuringen en afwijzingen via één verzendhandeling.

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.

<?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 Submit Actie kan verborgen inputgebieden (gebruikend de HTML inputmarkering) aan teruggegeven vorm HTML 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 verzendactie kan gebruiken tijdens de verwerking van het formulier. 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 het script Handeling verzenden post.jsp hebt u vervolgens toegang tot deze velden met behulp van aanvraagparameters en kunt u de totale tijd berekenen die nodig is om het formulier in te vullen.

Bestandsbijlagen file-attachments

Verzendhandelingen kunnen ook de bestandsbijlagen gebruiken die u uploadt met de component Bestandsbijlage. Verzend de manuscripten van de Actie kunnen tot deze dossiers toegang hebben gebruikend de van de schuine streep 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()));
    }
}

Als u bestanden bijvoegt bij het adaptieve formulier, valideert de server de bestandsbijlagen na het verzenden van het adaptieve formulier en wordt een foutbericht geretourneerd als:

  • Bestandsbijlagen bevatten een bestandsnaam die begint met (.) teken, bevat \ / : * ? " < > | ; % $ tekens of bevat speciale bestandsnamen die zijn gereserveerd voor Windows-besturingssystemen, zoals nul , prn , con , lpt of com .

  • De grootte van de bestandsbijlage is 0 bytes.

  • Het formaat van de dossiergehechtheid wordt niet bepaald in de Ondersteunde sectie van de Types van Dossierterwijl het vormen van de component van de Bijlage van het Dossier in een Aangepaste Vorm.

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 Submit Action of de setRedirectUrl API in de Guide Submit servlet. 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). OOTB legt Actiesvoor gebruik Redirect URL om browser van het middel om te leiden dat de voorwaartse wegverwijzingen.
U kunt een aangepaste handeling Verzenden schrijven die een aanvraag doorstuurt naar een bron of servlet. De Adobe adviseert dat het manuscript dat middelbehandeling voor de voorwaartse weg uitvoert het verzoek aan Redirect URL opnieuw richt wanneer de verwerking voltooit.

Handeling verzenden submit-action

Een handeling Verzenden is een sling:map die het volgende bevat:

  • addfields.jsp: Dit manuscript verstrekt de actievelden die aan het dossier van de HTML tijdens vertoning worden toegevoegd. Gebruik dit script om verborgen invoerparameters toe te voegen die zijn vereist 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 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 bij de Adaptief Forms voor weergave 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 AanpassingsVorm specificeert waarvoor de Submit Actie van toepassing is. xsd wordt gesteund voor op XSD-Gebaseerde Aanpassings Forms. basis wordt gesteund voor Aanpassings Forms die geen XDP of XSD gebruiken. Voeg de overeenkomende tekenreeksen toe om de handeling weer te geven op meerdere typen Adaptief Forms. Scheid elke tekenreeks door een komma. Als u bijvoorbeeld een handeling zichtbaar wilt maken op XSD-gebaseerde Adaptieve Forms, geeft u de waarde op als xsd.

    • jcr:beschrijving van typeKoord. De waarde van deze eigenschap wordt weergegeven in de lijst Handeling verzenden op het tabblad Handelingen verzenden van het dialoogvenster Formulier bewerken Adaptief. De OOTB-acties zijn aanwezig in de CRX-opslagplaats op de locatie /libs/fd/af/components/guidesubmittype .

    • submitService van typeKoord. Voor meer informatie, zie de Aangepaste voorlegging van de Vorm van het Programma voor douaneacties.

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

Voer de volgende stappen uit om een aangepaste handeling Verzenden te maken die de gegevens opslaat in de CRX-opslagplaats en u vervolgens een e-mail stuurt. Het adaptieve formulier bevat de afgekeurde OOTB-code voor het verzenden van Action Store-inhoud die de gegevens opslaat in de CRX-opslagplaats. Bovendien verstrekt AEM a PostAPI die kan worden gebruikt om e-mail te verzenden. Voordat u de e-mail-API gebruikt, configureert u de Day CQ Mail-service via 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. Maak een knooppunt met de eigenschap sling:Folder en name store_and_mail in de map /apps/custom_submit_action. Maak de map custom_submit_action als deze nog niet bestaat.

    Scherenshot die de verwezenlijking van een knoop met het bezit toont:Omslag

  2. verstrek de verplichte configuratiegebieden.

    Voeg de configuratie toe die de winkelactie vereist. Kopieer cq:dialoog 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 waarmee e-mailberichten naar gebruikers worden verzonden. Pas deze actie aan op basis van uw vereisten. Ga naar /libs/fd/af/components/guidesubmittype/email/dialog. Kopieer de knooppunten in het cq:dialog-knooppunt naar cq:dialog-knooppunt van uw verzendhandeling (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:

  5. Open een adaptief formulier. Klik uitgeven knoop naast Begin om te openen geef dialoog van de Aangepaste container van de Vorm 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 configuratiedialoog van de Actie

  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 actie OOTB Store uit (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 in 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.

Use submitService property for custom Submit Actions submitservice-property

Wanneer u de douane plaatst legt Actie voor, die het submitService bezit omvat, brengt de vorm FormSubmitActionServiceop voorlegging in werking. In FormSubmitActionService wordt de methode getServiceName gebruikt om de waarde voor de eigenschap submitService op te halen. Gebaseerd op de waarde van het submitService bezit, roept de dienst aangewezen voorlegt methode aan. Neem de FormSubmitActionService op in de aangepaste bundel die u uploadt naar de AEM Forms -server.

Voeg de eigenschap submitService van het type tekenreeks toe aan de sling:Folder van de aangepaste handeling Verzenden om Adobe Sign in te schakelen voor het adaptieve formulier. U kunt de optie Enable Adobe Sign alleen selecteren in het gedeelte Electronic Signature van de containereigenschappen van het adaptieve formulier nadat u de waarde hebt ingesteld voor de eigenschap submitService van de aangepaste verzendactie.

voorlegt de dienstbezit

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab