Show Menu
SUJETS×

Messages d’erreur de validation standard pour les formulaires adaptatifs

Les formulaires adaptatifs valident les entrées fournies dans les champs en fonction de critères de validation prédéfinis. Les critères de validation font référence aux valeurs d’entrée acceptables pour les champs d’un formulaire adaptatif. Vous pouvez définir les critères de validation en fonction de la source de données que vous utilisez avec le formulaire adaptatif. Par exemple, si vous utilisez les services Web RESTful comme source de données, vous pouvez définir les critères de validation dans un fichier de définition Swagger.
Si les valeurs d’entrée répondent aux critères de validation, elles sont envoyées à la source de données. Sinon, le formulaire adaptatif affiche un message d’erreur.
De la même manière que cette approche, les formulaires adaptatifs peuvent désormais s’intégrer aux services personnalisés pour effectuer des validations de données. Si les valeurs d’entrée ne répondent pas aux critères de validation et que le message d’erreur de validation renvoyé par le serveur est au format standard, les messages d’erreur s’affichent au niveau du champ dans le formulaire.
Si les valeurs d’entrée ne répondent pas aux critères de validation et que le message d’erreur de validation du serveur n’est pas au format de message standard, les formulaires adaptatifs fournissent un mécanisme pour transformer les messages d’erreur de validation en un format standard afin qu’ils s’affichent au niveau du champ dans le formulaire. Vous pouvez transformer le message d’erreur au format standard à l’aide de l’une des deux méthodes suivantes :
  • Ajouter un gestionnaire d’erreurs personnalisé lors de l’envoi du formulaire adaptatif
  • Ajout d’un gestionnaire personnalisé à l’action Service d’appel à l’aide de l’éditeur de règles
Cet article décrit le format standard des messages d’erreur de validation et les instructions de transformation des messages d’erreur d’un format personnalisé au format standard.

Format du message d’erreur de validation standard

Les formulaires adaptatifs affichent les erreurs au niveau du champ si les messages d’erreur de validation du serveur sont au format standard suivant :
   {
    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>
}

Où :
  • errorCausedBy décrit la raison de l’échec
  • errors mentionnez l’expression SOM des champs qui ont échoué aux critères de validation avec le message d’erreur de validation.
  • originCode contient le code d'erreur renvoyé par le service externe
  • originMessage contient les données d'erreur brutes renvoyées par le service externe

Configuration de l’envoi de formulaire adaptatif pour ajouter des gestionnaires personnalisés

Si le message d’erreur de validation du serveur ne s’affiche pas dans le format standard, vous pouvez activer l’envoi asynchrone et ajouter un gestionnaire d’erreurs personnalisé lors de l’envoi du formulaire adaptatif pour convertir le message dans un format standard.

Configuration de l’envoi asynchrone de formulaires adaptatifs

Avant d’ajouter un gestionnaire personnalisé, vous devez configurer le formulaire adaptatif pour l’envoi asynchrone. Exécutez les étapes suivantes :
  1. In adaptive form authoring mode, select the Form Container object and tap to open its properties.
  2. In the Submission properties section, enable Use asynchronous submission .
  3. Sélectionnez Revalider sur le serveur pour valider les valeurs des champs d’entrée sur le serveur avant envoi.
  4. Sélectionnez l’action Envoyer :
    • Sélectionnez Envoyer à l’aide du modèle de données de formulaire et sélectionnez le modèle de données approprié si vous utilisez le modèle de données de formulaire basé sur le service Web RESTful comme source de données.
    • Sélectionnez Envoyer au point de fin REST et spécifiez l’URL/chemin de redirection si vous utilisez les services Web RESTful comme source de données.
  5. Appuyez sur pour enregistrer les propriétés.

Ajouter un gestionnaire d’erreurs personnalisé lors de l’envoi du formulaire adaptatif

AEM Forms fournit des gestionnaires de réussite et d’erreur prêts à l’emploi pour les envois de formulaires. Les gestionnaires sont des fonctions côté client qui s’exécutent en fonction de la réponse du serveur. Lorsqu’un formulaire est envoyé, les données sont transmises au serveur pour validation, ce qui renvoie une réponse au client avec des informations sur l’événement de réussite ou d’erreur pour l’envoi. Les informations sont transmises en tant que paramètres au gestionnaire approprié pour exécuter la fonction.
Exécutez les étapes suivantes pour ajouter un gestionnaire d’erreurs personnalisé lors de l’envoi du formulaire adaptatif :
  1. Open the adaptive form in authoring mode, select any form object, and tap to open the rule editor.
  2. Sélectionnez Formulaire dans l’arborescence des objets de formulaire et appuyez sur Créer .
  3. Sélectionnez Erreur dans l’envoi dans la liste déroulante Evénement.
  4. Ecrivez une règle pour convertir la structure d’erreur personnalisée en structure d’erreur standard et appuyez sur Terminé pour enregistrer la règle.
Voici un exemple de code pour convertir une structure d’erreur personnalisée en structure d’erreur standard :
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);
    }
}

La var som_map liste répertorie l’expression SOM des champs du formulaire adaptatif que vous souhaitez transformer en format standard. Vous pouvez afficher l’expression SOM de n’importe quel champ d’un formulaire adaptatif en appuyant sur le champ et en sélectionnant Afficher l’expression SOM.
A l’aide de ce gestionnaire d’erreurs personnalisé, le formulaire adaptatif convertit les champs répertoriés dans le format var som_map de message d’erreur standard. Par conséquent, les messages d’erreur de validation s’affichent au niveau du champ dans le formulaire adaptatif.

Ajout d’un gestionnaire personnalisé à l’aide de l’action Service d’appel

Exécutez les étapes suivantes pour ajouter un gestionnaire d’erreur afin de convertir une structure d’erreur personnalisée en structure d’erreur standard à l’aide de l’action Invoke Service de l’éditeur de règles :
  1. Open the adaptive form in authoring mode, select any form object, and tap to open the rule editor.
  2. Appuyez sur Créer .
  3. Créez une condition dans la section Lorsque de la règle. Par exemple, # est modifié. Sélectionnez est modifié dans la liste déroulante Sélectionner un état pour obtenir cette condition.
  4. In the Then section, select Invoke Service from the Select Action drop-down list.
  5. Sélectionnez un service Post et ses liaisons de données correspondantes dans la section Entrée . Par exemple, si vous souhaitez valider les champs Nom , ID et État dans le formulaire adaptatif, sélectionnez un service de publication (animal de compagnie) et sélectionnez pet.name, pet.id et pet.status dans la section Input.
En raison de cette règle, les valeurs que vous saisissez pour les champs Nom , ID et État sont validées dès que le champ défini à l’étape 2 est modifié et que vous sortez du champ du formulaire.
  1. Select Code Editor from the mode selection drop-down list.
  2. Appuyez sur Modifier le code .
  3. Supprimez la ligne suivante du code existant :
    guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs);
    
    
  4. Ecrivez une règle pour convertir la structure d’erreur personnalisée en structure d’erreur standard et appuyez sur Terminé pour enregistrer la règle. Par exemple, ajoutez l’exemple de code suivant à la fin pour convertir une structure d’erreur personnalisée en structure d’erreur standard :
    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);
    
    
    La var som_map liste répertorie l’expression SOM des champs du formulaire adaptatif que vous souhaitez transformer en format standard. Vous pouvez afficher l’expression SOM de n’importe quel champ d’un formulaire adaptatif en appuyant sur le champ et en sélectionnant Afficher l’expression SOM dans le menu Plus d’options (...).
    Assurez-vous de copier la ligne suivante de l’exemple de code dans le gestionnaire d’erreurs personnalisé :
    guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs, null, errorHandler);
    
    
    L’API executeOperation inclut les paramètres null et errorHandler en fonction du nouveau gestionnaire d’erreurs personnalisé.
    A l’aide de ce gestionnaire d’erreurs personnalisé, le formulaire adaptatif convertit les champs répertoriés dans le format var som_map de message d’erreur standard. Par conséquent, les messages d’erreur de validation s’affichent au niveau du champ dans le formulaire adaptatif.