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 même, les formulaires adaptatifs peuvent désormais s’intégrer à des 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 offrent un mécanisme permettant de transformer les messages d’erreur de validation en format standard afin qu’ils s’affichent au niveau du champ dans le formulaire. Vous pouvez transformer le message d’erreur en format standard en utilisant l’une des deux méthodes suivantes :
  • Ajouter un gestionnaire d’erreurs personnalisé lors de l’envoi du formulaire adaptatif
  • Ajouter un gestionnaire personnalisé à l’action Appeler le service à 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é en 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, ainsi que 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.

Configure asynchronous adaptive form submission

Avant d’ajouter un gestionnaire personnalisé, vous devez configurer le formulaire adaptatif pour un envoi asynchrone. Procédez comme suit :
  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 vers le point de terminaison REST et spécifiez l’URL/le chemin de redirection si vous utilisez les services Web RESTful comme source de données.
  5. Appuyez sur (Enregistrer) 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 Évé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);
    }
}

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

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

Exécutez les étapes suivantes pour ajouter un gestionnaire d’erreurs afin de convertir une structure d’erreurs personnalisée en structure d’erreurs 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 atteindre cette condition.
  4. Dans la section Then (Alors), sélectionnez Invoke Service (Appeler un service) dans la liste déroulante Select Action (Sélectionner une action).
  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 Post (animal de compagnie) et sélectionnez pet.name, pet.id et pet.status dans la section Input.
En conséquence, 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);
    
    
    L’ var som_map expression SOM des champs de formulaire adaptatif que vous souhaitez transformer en format standard est liste. Vous pouvez vue l’expression SOM de n’importe quel champ d’un formulaire adaptatif en appuyant sur le champ et en sélectionnant Expression SOM Vue dans le menu Autres 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 var som_map le format de message d’erreur standard. En conséquence, les messages d’erreur de validation s’affichent au niveau du champ dans le formulaire adaptatif.