Messages d’erreur de validation standard des formulaires adaptatifs

ATTENTION

AEM 6.4 a atteint la fin de la prise en charge étendue et cette documentation n’est plus mise à jour. Pour plus d’informations, voir notre période de support technique. Rechercher les versions prises en charge here.

Les formulaires adaptatifs valident les entrées que vous fournissez 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 des 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. Dans le cas contraire, 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 du message, 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 standard du message, 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’erreur personnalisé lors de l’envoi du formulaire adaptatif
  • Ajouter 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 pour transformer les messages d’erreur d’un format personnalisé en un 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 le motif de l’échec.
  • errors mentionne 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.

Configurer 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’erreur personnalisé lors de l’envoi du formulaire adaptatif pour convertir le message dans un format standard.

Configurer l’envoi asynchrone du formulaire adaptatif

Avant d’ajouter un gestionnaire personnalisé, vous devez configurer le formulaire adaptatif pour l’envoi asynchrone. Procédez comme suit :

  1. En mode de création de formulaire adaptatif, sélectionnez l’objet Conteneur de formulaires et appuyez sur Propriétés des formulaires adaptatifs pour ouvrir ses propriétés.

  2. Dans la section des propriétés Envoi, activez Utiliser l’envoi asynchrone.

  3. Sélectionnez Revalider sur le serveur pour valider les valeurs des champs d’entrée sur le serveur avant l’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 service web RESTful basé sur le modèle de données de formulaire comme source de données.
    • Sélectionnez Envoyer vers le point d’entrée REST et spécifiez la variable URL/chemin de redirection, si vous utilisez des services web RESTful comme source de données.

    Propriétés d’envoi de formulaire adaptatif

  5. Appuyez sur Enregistrer pour enregistrer les propriétés.

Ajouter un gestionnaire d’erreur 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 formulaire. 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 succès 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. Ouvrez le formulaire adaptatif en mode création, sélectionnez n’importe quel objet de formulaire et appuyez sur  pour ouvrir l’éditeur de règles.
  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. Créez une règle pour convertir la structure d’erreur personnalisée en structure d’erreur standard, puis 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);
    }
}

Le var som_map répertorie l’expression SOM des champs de formulaire adaptatif que vous souhaitez transformer au 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.

À l’aide de ce gestionnaire d’erreurs personnalisé, le formulaire adaptatif convertit les champs répertoriés dans var som_map au format standard du message d’erreur. Par conséquent, 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 Invoke Service

Exécutez les opérations suivantes pour ajouter un gestionnaire d’erreurs 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. Ouvrez le formulaire adaptatif en mode création, sélectionnez n’importe quel objet de formulaire et appuyez sur Éditeur de règles pour ouvrir l’éditeur de règles.
  2. Appuyez sur Créer.
  3. Définissez une condition dans la section Lorsque de la règle. Par exemple, lorsque le [Nom du champ] est modifiée. Sélectionner est modifié de 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 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 le champ Entrée.

Par conséquent, les valeurs que vous saisissez pour Nom, ID et État sont validés, dès que le champ défini à l’étape 2 est modifié et que vous désélectionnez le champ du formulaire.

  1. Sélectionnez l’éditeur de code dans la liste déroulante de sélection de mode.

  2. Appuyer sur Modifier le code.

  3. Supprimez la ligne suivante du code existant :

    guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs);
    
  4. Créez une règle pour convertir la structure d’erreur personnalisée en structure d’erreur standard, puis 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);
    

    Le var som_map répertorie l’expression SOM des champs de formulaire adaptatif que vous souhaitez transformer au 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 du menu Autres options (…).

    Veillez à 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 comprend les paramètres null et errorHandler en fonction du nouveau gestionnaire d’erreurs personnalisé.

    À l’aide de ce gestionnaire d’erreurs personnalisé, le formulaire adaptatif convertit les champs répertoriés dans var som_map au format standard du message d’erreur. Par conséquent, les messages d’erreur de validation s’affichent au niveau du champ dans le formulaire adaptatif.

Sur cette page