Standardmäßige Validierungsfehlermeldungen für adaptive Formulare

Adaptive Formulare validieren die Eingaben, die Sie in Feldern bereitstellen, basierend auf vordefinierten Validierungskriterien. Die Validierungskriterien beziehen sich auf die zulässigen Eingabewerte für Felder in einem adaptiven Formular. Sie können die Validierungskriterien auf Grundlage der Datenquelle festlegen, die Sie mit dem adaptiven Formular verwenden. Wenn Sie beispielsweise RESTful-Webdienste als Datenquelle verwenden, können Sie die Validierungskriterien in einer Swagger-Definitionsdatei definieren.

Wenn die Eingabewerte die Validierungskriterien erfüllen, werden die Werte an die Datenquelle gesendet. Andernfalls zeigt das adaptive Formular eine Fehlermeldung an.

Ähnlich wie dieser Ansatz können adaptive Formulare jetzt in benutzerdefinierte Dienste integriert werden, um Datenvalidierungen durchzuführen. Wenn die eingegebenen Werte die Validierungskriterien nicht erfüllen und die vom Server zurückgegebene Validierungsfehlermeldung im standardmäßigen Nachrichtenformat vorliegt, werden die Fehlermeldungen auf Feldebene im Formular angezeigt.

Wenn die Eingabewerte die Validierungskriterien nicht erfüllen und die Fehlermeldung bei der Servervalidierung nicht im standardmäßigen Nachrichtenformat vorliegt, bieten die adaptiven Formulare einen Mechanismus, um die Validierungsfehlermeldungen in ein Standardformat umzuwandeln, sodass sie auf Feldebene im Formular angezeigt werden. Sie können die Fehlermeldung mit einer der beiden folgenden Methoden in das Standardformat umwandeln:

  • Hinzufügen eines benutzerdefinierten Fehler-Handlers bei der Übermittlung des adaptiven Formulars
  • Fügen Sie mithilfe des Regeleditors einen benutzerdefinierten Handler zur Aktion "Dienst aufrufen"hinzu

In diesem Artikel werden das Standardformat für die Validierungsfehlermeldungen und die Anweisungen zum Konvertieren der Fehlermeldungen von einer benutzerdefinierten in das Standardformat beschrieben.

Standardmäßige Validierungs-Fehlermeldungsformat

Die adaptiven Formulare zeigen die Fehler auf Feldebene an, wenn die Fehlermeldungen bei der Servervalidierung im folgenden Standardformat vorliegen:

   {
    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>
}

wobei:

  • errorCausedBy beschreibt den Grund für das Fehlschlagen
  • errors den SOM-Ausdruck der Felder, die die Validierungskriterien nicht erfüllt haben, zusammen mit der Validierungsfehlermeldung erwähnen
  • originCode enthält den vom externen Dienst zurückgegebenen Fehlercode
  • originMessage enthält die vom externen Dienst zurückgegebenen rohen Fehlerdaten

Konfigurieren Sie die Übermittlung des adaptiven Formulars, um benutzerdefinierte Handler hinzuzufügen.

Wenn die Fehlermeldung zur Servervalidierung nicht im Standardformat angezeigt wird, können Sie die asynchrone Übermittlung aktivieren und einen benutzerdefinierten Fehler-Handler bei der Übermittlung des adaptiven Formulars hinzufügen, um die Nachricht in ein Standardformat zu konvertieren.

Konfigurieren der asynchronen Übermittlung des adaptiven Formulars

Bevor Sie einen benutzerdefinierten Handler hinzufügen, müssen Sie das adaptive Formular für die asynchrone Übermittlung konfigurieren. Führen Sie die folgenden Schritte aus:

  1. Wählen Sie im Authoring-Modus für adaptive Formulare das Objekt "Formularcontainer"aus und tippen Sie auf Eigenschaften für adaptive Formulare, um seine Eigenschaften zu öffnen.

  2. Aktivieren Sie im Abschnitt Submission properties die Option Asynchrone Übermittlung verwenden.

  3. Wählen Sie Auf Server erneut überprüfen aus, um die Eingabefeldwerte auf dem Server vor der Übermittlung zu überprüfen.

  4. Wählen Sie die Sendeaktion aus:

    • Wählen Sie Senden mit Formulardatenmodell und wählen Sie das entsprechende Datenmodell aus, wenn Sie das RESTful-Webdienst-basierte Formulardatenmodell als Datenquelle verwenden.
    • Wählen Sie An REST-Endpunkt übermitteln und geben Sie die Umleitungs-URL/Pfad an, wenn Sie RESTful-Webdienste als Datenquelle verwenden.

    Eigenschaften für die Übermittlung adaptiver Formulare

  5. Tippen Sie auf Speichern, um die Eigenschaften zu speichern.

Fügen Sie einen benutzerdefinierten Fehler-Handler bei der Übermittlung des adaptiven Formulars hinzu.

AEM Forms bietet standardmäßig Handler zur Verarbeitung von erfolgreichen und fehlgeschlagenen Formularübermittlungen an. Handler sind clientseitige Funktionen, die anhand der Serverantwort ausgeführt werden. Wenn ein Formular übermittelt wird, werden die Daten zur Validierung an den Server gesendet, der eine Antwort mit Informationen über den Erfolg oder das Fehlschlagen der Übermittlung an den Client zurücksendet. Die Informationen werden als Parameter an den relevanten Handler übergeben, um die Funktion auszuführen.

Führen Sie die folgenden Schritte aus, um beim Senden des adaptiven Formulars einen benutzerdefinierten Fehler-Handler hinzuzufügen:

  1. Öffnen Sie das adaptive Formular im Authoring-Modus, wählen Sie ein beliebiges Formularobjekt aus und tippen Sie auf , um den Regeleditor zu öffnen.
  2. Wählen Sie Formular in der Struktur „Formularobjekte“ und tippen Sie auf Erstellen.
  3. Wählen Sie Fehler beim Senden aus der Dropdown-Liste Ereignis aus.
  4. Schreiben Sie eine Regel, um die benutzerdefinierte Fehlerstruktur in die standardmäßige Fehlerstruktur zu konvertieren, und tippen Sie auf Fertig, um die Regel zu speichern.

Im Folgenden finden Sie einen Beispielcode zum Konvertieren einer benutzerdefinierten Fehlerstruktur in die standardmäßige Fehlerstruktur:

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);
    }
}

Der var som_map listet den SOM-Ausdruck der adaptiven Formularfelder auf, die in das Standardformat umgewandelt werden sollen. Sie können den SOM-Ausdruck eines beliebigen Felds in einem adaptiven Formular anzeigen, indem Sie auf das Feld tippen und SOM-Ausdruck anzeigen auswählen.

Mit diesem benutzerdefinierten Fehler-Handler konvertiert das adaptive Formular die in var som_map aufgelisteten Felder in das standardmäßige Fehlermeldungsformat. Daher werden die Überprüfungsfehlermeldungen auf Feldebene im adaptiven Formular angezeigt.

Hinzufügen eines benutzerdefinierten Handlers mit der Aktion "Dienst aufrufen"

Führen Sie die folgenden Schritte aus, um einen Fehler-Handler hinzuzufügen, um eine benutzerdefinierte Fehlerstruktur mithilfe der Aktion Regel-Editor Dienst aufrufen in die Standardfehlerstruktur zu konvertieren:

  1. Öffnen Sie das adaptive Formular im Authoring-Modus, wählen Sie ein beliebiges Formularobjekt aus und tippen Sie auf Regeleditor, um den Regeleditor zu öffnen.
  2. Tippen Sie auf Erstellen.
  3. Erstellen Sie eine Bedingung im Abschnitt Wenn der Regel. Beispiel: Wenn[Name des Felds] geändert wird. Wählen Sie Wird geändert aus der Dropdownliste Status auswählen aus, um diese Bedingung zu erfüllen.
  4. Im Abschnitt Dann wählen Sie Dienst aufrufen aus der Dropdown-Liste Aktion auswählen.
  5. Wählen Sie einen Post-Dienst und die zugehörigen Datenbindungen aus dem Abschnitt Input aus. Beispiel: Wenn Sie die Felder Name, ID und Status im adaptiven Formular validieren möchten, wählen Sie einen Post-Dienst (Begleiter) aus und wählen Sie die Felder "pet.name", "pet.id"und "pet.status"im Abschnitt Input aus.

Als Ergebnis dieser Regel werden die Werte, die Sie für die Felder Name, ID und Status eingeben, validiert, sobald das in Schritt 2 definierte Feld geändert wird und Sie aus dem Feld im Formular die Tabulatortaste verlassen.

  1. Wählen Sie Code-Editor aus der Dropdown-Liste der Modusauswahl.

  2. Tippen Sie auf Code bearbeiten.

  3. Löschen Sie die folgende Zeile aus dem vorhandenen Code:

    guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs);
    
  4. Schreiben Sie eine Regel, um die benutzerdefinierte Fehlerstruktur in die standardmäßige Fehlerstruktur zu konvertieren, und tippen Sie auf Fertig, um die Regel zu speichern.
    Fügen Sie beispielsweise den folgenden Beispielcode am Ende hinzu, um eine benutzerdefinierte Fehlerstruktur in die standardmäßige Fehlerstruktur zu konvertieren:

    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);
    

    Der var som_map listet den SOM-Ausdruck der adaptiven Formularfelder auf, die in das Standardformat umgewandelt werden sollen. Sie können den SOM-Ausdruck eines beliebigen Felds in einem adaptiven Formular anzeigen, indem Sie auf das Feld tippen und SOM-Ausdruck anzeigen aus dem Menü Weitere Optionen (…) auswählen.

    Stellen Sie sicher, dass Sie die folgende Zeile des Beispielcodes in den benutzerdefinierten Fehler-Handler kopieren:

    guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs, null, errorHandler);
    

    Die executeOperation-API enthält die Parameter null und errorHandler , die auf dem neuen benutzerdefinierten Fehler-Handler basieren.

    Mit diesem benutzerdefinierten Fehler-Handler konvertiert das adaptive Formular die in var som_map aufgelisteten Felder in das standardmäßige Fehlermeldungsformat. Daher werden die Überprüfungsfehlermeldungen auf Feldebene im adaptiven Formular angezeigt.

Auf dieser Seite