Standaardvalidatiefoutenberichten voor adaptieve formulieren standard-validation-error-messages

CAUTION
AEM 6.4 heeft het einde van de uitgebreide ondersteuning bereikt en deze documentatie wordt niet meer bijgewerkt. Raadpleeg voor meer informatie onze technische ondersteuningsperioden. Ondersteunde versies zoeken hier.

Aangepaste formulieren valideren de invoer die u in velden opgeeft op basis van vooraf ingestelde validatiecriteria. De validatiecriteria verwijzen naar de aanvaardbare invoerwaarden voor velden in een adaptieve vorm. U kunt de validatiecriteria instellen op basis van de gegevensbron die u gebruikt bij het adaptieve formulier. Als u bijvoorbeeld RESTful-webservices gebruikt als gegevensbron, kunt u de validatiecriteria definiëren in een Swagger-definitiebestand.

Als de invoerwaarden aan de validatiecriteria voldoen, worden de waarden naar de gegevensbron verzonden. Anders wordt een foutbericht weergegeven in het adaptieve formulier.

Op dezelfde manier kunnen adaptieve formulieren nu worden geïntegreerd met aangepaste services om gegevensvalidaties uit te voeren. Als de invoerwaarden niet voldoen aan de validatiecriteria en het foutbericht dat de server retourneert, de standaardberichtindeling heeft, worden de foutberichten in het formulier op veldniveau weergegeven.

Als de invoerwaarden niet voldoen aan de validatiecriteria en het foutbericht voor servervalidatie niet in de standaardberichtindeling is, bieden de adaptieve formulieren een mechanisme om de foutberichten voor validatie om te zetten in een standaardnotatie, zodat ze op veldniveau in het formulier worden weergegeven. U kunt het foutbericht op een van de volgende twee manieren transformeren in de standaardindeling:

  • Aangepaste fouthandler toevoegen bij het verzenden van aangepaste formulieren
  • Voeg douanemanager toe om de actie van de Dienst aan te halen gebruikend de Redacteur van de Regel

In dit artikel wordt de standaardindeling beschreven voor de foutberichten voor validatie en de instructies voor het omzetten van de foutberichten van een aangepaste in de standaardindeling.

Standaardberichtindeling voor validatiefouten standard-validation-message-format

De adaptieve formulieren geven de fouten op veldniveau weer als de foutberichten voor servervalidatie de volgende standaardnotatie hebben:

   {
    errorCausedBy : "SERVER_SIDE_VALIDATION/SERVICE_INVOCATION_FAILURE"
    errors : [
        {
             somExpression  : <somexpr>
             errorMessage / errorMessages : <validationMsg> / [<validationMsg>, <validationMsg>]

        }
    ]
    originCode : <target error Code>
    originMessage : <unstructured error message returned by service>
}

Waar:

  • errorCausedBy beschrijft de reden van mislukking
  • errors de SOM-expressie vermelden van de velden waarvoor de validatiecriteria niet zijn nageleefd, samen met het foutbericht voor de validatie
  • originCode bevat de foutcode die door de externe service wordt geretourneerd
  • originMessage bevat de onbewerkte foutgegevens die door de externe service worden geretourneerd

Aangepaste formulierverzending configureren om aangepaste handlers toe te voegen configure-adaptive-form-submission

Als het foutbericht voor servervalidatie niet in de standaardindeling wordt weergegeven, kunt u asynchrone verzending inschakelen en een aangepaste fouthandler toevoegen bij het verzenden van het formulier om het bericht om te zetten in een standaardindeling.

Asynchrone adaptieve formulierverzending configureren configure-asynchronous-adaptive-form-submission

Voordat u een aangepaste handler toevoegt, moet u het adaptieve formulier configureren voor asynchrone verzending. Voer de volgende stappen uit:

  1. Selecteer in de modus Aangepast formulier voor het schrijven van programmacode het object Form Container en tik op adaptieve formuliereigenschappen om de eigenschappen te openen.

  2. In de Submission eigenschappensectie, inschakelen Use asynchronous submission.

  3. Selecteren Revalidate on server om de waarden van de invoervelden op de server vóór verzending te valideren.

  4. Selecteer de handeling Verzenden:

    • Selecteren Submit using Form Data Model en selecteer het juiste gegevensmodel als u RESTful-webservice gebruikt formuliergegevensmodel als gegevensbron.
    • Selecteren Submit to REST endpoint en de Redirect URL/Path, als u RESTful Webdiensten als gegevensbron gebruikt.

    adaptieve eigenschappen voor formulierverzending

  5. Tikken Opslaan om de eigenschappen op te slaan.

Aangepaste fouthandler toevoegen bij het verzenden van aangepaste formulieren add-custom-error-handler-af-submission

AEM Forms biedt offline succeshandlers en foutafhandelaars voor het verzenden van formulieren. Handlers zijn client-side functies die worden uitgevoerd op basis van de serverreactie. Wanneer een formulier wordt verzonden, worden de gegevens voor validatie naar de server verzonden, die een reactie op de client retourneert met informatie over de gebeurtenis 'success' of 'error' voor de verzending. De informatie wordt als parameters doorgegeven aan de relevante handler om de functie uit te voeren.

Voer de volgende stappen uit om aangepaste fouthandler toe te voegen bij het verzenden van aangepaste formulieren:

  1. Open het adaptieve formulier in de ontwerpmodus, selecteer een willekeurig formulierobject en tik op om de regeleditor te openen.
  2. Selecteren Form in de structuur Formulierobjecten en tik op Create.
  3. Selecteren Error in Submission in de vervolgkeuzelijst Gebeurtenis.
  4. Schrijf een regel om de aangepaste foutstructuur om te zetten in de standaardfoutstructuur en tik op Done om de regel op te slaan.

Hieronder volgt een voorbeeldcode voor het omzetten van een aangepaste foutstructuur in de standaardfoutstructuur:

var data = $event.data;
var som_map = {
    "id": "guide[0].guide1[0].guideRootPanel[0].Pet[0].id_1[0]",
    "name": "guide[0].guide1[0].guideRootPanel[0].Pet[0].name_2[0]",
    "status": "guide[0].guide1[0].guideRootPanel[0].Pet[0].status[0]"
};

var errorJson = {};
errorJson.errors = [];

if (data) {
    if (data.originMessage) {
        var errorData;
        try {
            errorData = JSON.parse(data.originMessage);
        } catch (err) {
            // not in json format
        }

        if (errorData) {
            Object.keys(errorData).forEach(function(key) {
                var som_key = som_map[key];
                if (som_key) {
                    var error = {};
                    error.somExpression = som_key;
                    error.errorMessage = errorData[key];
                    errorJson.errors.push(error);
                }
            });
        }
        window.guideBridge.handleServerValidationError(errorJson);
    } else {
        window.guideBridge.handleServerValidationError(data);
    }
}

De var som_map Hiermee geeft u de SOM-expressie weer van de adaptieve formuliervelden die u wilt transformeren in de standaardindeling. U kunt de SOM-expressie van elk veld in een adaptief formulier weergeven door op het veld te tikken en View SOM Expression.

Met deze aangepaste fouthandler worden de velden in het aangepaste formulier geconverteerd naar var som_map naar de standaardindeling voor foutberichten. Hierdoor worden de berichten met validatiefouten in het adaptieve formulier op veldniveau weergegeven.

Voeg douanemanager toe gebruikend de Actie van de Dienst van het Oproepen

Voer de volgende stappen uit om fouthandler toe te voegen voor het omzetten van een aangepaste foutstructuur in de standaardfoutstructuur met behulp van Regeleditor Actie Service aanroepen:

  1. Open het adaptieve formulier in de ontwerpmodus, selecteer een willekeurig formulierobject en tik op Regeleditor om de regeleditor te openen.
  2. Tik op Create.
  3. Een voorwaarde maken in het dialoogvenster When van de regel. Als[Naam van veld] is gewijzigd. Selecteren is changed van de Select State vervolgkeuzelijst om deze voorwaarde te bereiken.
  4. In de Then sectie, selecteert u Invoke Service van de Select Action vervolgkeuzelijst.
  5. Selecteer een postservice en de bijbehorende gegevensbindingen in het menu Input sectie. Als u bijvoorbeeld wilt valideren Naam, ID, en Status in het adaptieve formulier selecteert u een Post-service (pet) en selecteert u pet.name, pet.id en pet.status in het dialoogvenster Input sectie.

Als resultaat van deze regel worden de waarden opgegeven waarvoor u Naam, ID, en Status velden worden gevalideerd, zodra het in stap 2 gedefinieerde veld wordt gewijzigd en u het veld in het formulier verlaat.

  1. Selecteren Code Editor in de vervolgkeuzelijst Modus selecteren.

  2. Tik op Edit Code.

  3. Verwijder de volgende regel uit de bestaande code:

    code language-javascript
    guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs);
    
  4. Schrijf een regel om de aangepaste foutstructuur om te zetten in de standaardfoutstructuur en tik op Done om de regel op te slaan.
    Voeg bijvoorbeeld de volgende voorbeeldcode aan het einde toe om een aangepaste foutstructuur om te zetten in de standaardfoutstructuur:

    code language-javascript
    var errorHandler = function(jqXHR, data) {
    var som_map = {
        "id": "guide[0].guide1[0].guideRootPanel[0].Pet[0].id_1[0]",
        "name": "guide[0].guide1[0].guideRootPanel[0].Pet[0].name_2[0]",
        "status": "guide[0].guide1[0].guideRootPanel[0].Pet[0].status[0]"
    };
    
    
    var errorJson = {};
    errorJson.errors = [];
    
    if (data) {
        if (data.originMessage) {
            var errorData;
            try {
                errorData = JSON.parse(data.originMessage);
            } catch (err) {
                // not in json format
            }
    
            if (errorData) {
                Object.keys(errorData).forEach(function(key) {
                    var som_key = som_map[key];
                    if (som_key) {
                        var error = {};
                        error.somExpression = som_key;
                        error.errorMessage = errorData[key];
                        errorJson.errors.push(error);
                    }
                });
            }
            window.guideBridge.handleServerValidationError(errorJson);
        } else {
            window.guideBridge.handleServerValidationError(data);
        }
      }
    };
    
    guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs, null, errorHandler);
    

    De var som_map Hiermee geeft u de SOM-expressie weer van de adaptieve formuliervelden die u wilt transformeren in de standaardindeling. U kunt de SOM-expressie van elk veld in een adaptief formulier weergeven door op het veld te tikken en View SOM Expression van More Opions (…).

    Zorg ervoor dat u de volgende regel van de voorbeeldcode naar de aangepaste fouthandler kopieert:

    code language-javascript
    guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs, null, errorHandler);
    

    De API van executeOperation bevat de null en errorHandler parameters die zijn gebaseerd op de nieuwe aangepaste fouthandler.

    Met deze aangepaste fouthandler worden de velden in het aangepaste formulier geconverteerd naar var som_map naar de standaardindeling voor foutberichten. Hierdoor worden de berichten met validatiefouten in het adaptieve formulier op veldniveau weergegeven.

recommendation-more-help
a6ebf046-2b8b-4543-bd46-42a0d77792da