Standardmäßige Validierungsfehlermeldungen für adaptive Formulare standard-validation-error-messages
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-Web-Services 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 bei diesem Ansatz können adaptive Formulare jetzt in benutzerdefinierte Services 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 Validierung durch den Server 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
- Hinzufügen eines benutzerdefinierten Handlers zur Aktion „Service aufrufen“ mithilfe des Regel-Editors
In diesem Artikel werden das Standardformat für die Validierungsfehlermeldungen und die Anweisungen zum Konvertieren der Fehlermeldungen von einem benutzerdefinierten in das standardmäßige Format beschrieben.
Standardmäßiges Format der Validierungsfehlermeldung standard-validation-message-format
Die adaptiven Formulare zeigen die Fehler auf Feldebene an, wenn die Fehlermeldungen bei der Validierung durch den Server 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>
}
Dabei gilt:
errorCausedBy
beschreibt den Grund für das Fehlschlagenerrors
geben den SOM-Ausdruck der Felder an, die die Überprüfungskriterien nicht erfüllt haben, zusammen mit der ValidierungsfehlermeldungoriginCode
enthält den vom externen Service zurückgegebenen Fehler-CodeoriginMessage
enthält die vom externen Service zurückgegebenen rohen Fehlerdaten
Konfigurieren der Übermittlung adaptiver Formulare zum Hinzufügen benutzerdefinierter Handler configure-adaptive-form-submission
Wenn die Fehlermeldung zur Validierung durch den Server 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 eines adaptiven Formulars configure-asynchronous-adaptive-form-submission
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:
-
Wählen Sie im Authoring-Modus des adaptiven Formulars das Objekt Formular-Container aus und tippen Sie auf , um seine Eigenschaften zu öffnen.
-
Aktivieren Sie im Eigenschaftenbereich Übermittlung die Option Asynchrone Übermittlung verwenden.
-
Wählen Sie Auf dem Server erneut überprüfen, um die Werte der Eingabefelder vor der Übermittlung auf dem Server zu validieren.
-
So wählen Sie die Aktion „Übermitteln“:
- Wählen Sie Senden mit Formulardatenmodell und wählen Sie das entsprechende Datenmodell, wenn Sie ein auf dem RESTful-Webservice basierendes Formulardatenmodell als Datenquelle verwenden.
- Wählen Sie An REST-Endpunkt übermitteln und geben Sie die Umleitungs-URL/Pfad an, wenn Sie RESTful-Web-Services als Datenquelle verwenden.
-
Tippen Sie auf , um die Eigenschaften zu speichern.
Hinzufügen eines benutzerdefinierten Fehler-Handlers bei der Übermittlung des adaptiven Formulars add-custom-error-handler-af-submission
AEM Forms bietet vordefinierte Erfolgs- und Fehler-Handler für die Formularübermittlung. Handler sind clientseitige Funktionen, die basierend auf der Serverantwort ausgeführt werden. Wenn ein Formular gesendet wird, werden die Daten zur Validierung an den Server übermittelt, der eine Antwort mit Informationen zum Erfolgs- oder Fehlerereignis für die Übermittlung an den Client zurückgibt. Die Informationen werden als Parameter an den relevanten Handler übergeben, um die Funktion auszuführen.
Führen Sie die folgenden Schritte aus, um beim Übermitteln des adaptiven Formulars einen benutzerdefinierten Fehler-Handler hinzuzufügen:
- Öffnen Sie das adaptive Formular im Authoring-Modus, wählen Sie ein Formularobjekt aus und tippen Sie auf , um den Regel-Editor zu öffnen.
- Wählen Sie Formular in der Struktur „Formularobjekte“ und tippen Sie auf Erstellen.
- Wählen Sie Fehler bei Übermittlung aus der Dropdown-Liste „Ereignis“ aus.
- 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 Beispiel-Code 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);
}
}
Die 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 im adaptiven Formular auf Feldebene angezeigt.
Hinzufügen eines benutzerdefinierten Handlers mithilfe der Aktion „Service aufrufen“
Führen Sie die folgenden Schritte aus, um einen Fehler-Handler hinzuzufügen, der eine benutzerdefinierte Fehlerstruktur mithilfe der Aktion „Service aufrufen“ des Regel-Editors in die Standardfehlerstruktur konvertiert:
- Öffnen Sie das adaptive Formular im Authoring-Modus, wählen Sie ein beliebiges Formularobjekt aus und tippen Sie auf , um den Regel-Editor zu öffnen.
- Tippen Sie auf Erstellen.
- Definieren Sie eine Bedingung im Abschnitt Wann der Regel. Beispiel: Wenn der [Feldname] geändert wird. Wählen Sie geändert aus der Dropdown-Liste Zustand wählen, um diese Bedingung zu erfüllen.
- Im Abschnitt Dann wählen Sie Dienst aufrufen aus der Dropdown-Liste Aktion auswählen.
- Wählen Sie einen Post-Service und die zugehörigen Datenbindungen aus dem Abschnitt Eingabe. Wenn Sie beispielsweise die Felder Name, ID und Status im adaptiven Formular überprüfen möchten, wählen Sie einen Post-Service (pet) und wählen Sie „pet.name“, „pet.id“ und „pet.status“ im Abschnitt Eingabe.
Infolge dieser Regel werden die Werte, die Sie für die Felder Name, ID und Status eingeben, überprüft, sobald das in Schritt 2 definierte Feld geändert wird und Sie das Feld im Formular mit der Tabulatortaste verlassen.
-
Wählen Sie Code-Editor aus der Dropdown-Liste zur Auswahl des Modus.
-
Tippen Sie auf Code bearbeiten.
-
Löschen Sie die folgende Zeile aus dem vorhandenen Code:
code language-javascript guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs);
-
Erstellen 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 Beispiel-Code am Ende hinzu, um eine benutzerdefinierte Fehlerstruktur in die standardmäßige Fehlerstruktur zu konvertieren: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);
Die
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 Beispiel-Codes in den benutzerdefinierten Fehler-Handler kopieren:
code language-javascript guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs, null, errorHandler);
Die executeOperation-API enthält die Parameter
null
underrorHandler
basierend auf dem neuen benutzerdefinierten Fehler-Handler.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 im adaptiven Formular auf Feldebene angezeigt.