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 :
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.
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’échecerrors
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 externeoriginMessage
contient les données d'erreur brutes renvoyées par le service externeSi 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.
Avant d’ajouter un gestionnaire personnalisé, vous devez configurer le formulaire adaptatif pour un envoi asynchrone. Procédez comme suit :
En mode de création de formulaires adaptatifs, sélectionnez l’objet de Conteneur de formulaire et appuyez sur pour ouvrir ses propriétés.
Dans la section des propriétés Submission, activez Utiliser l'envoi asynchrone.
Sélectionnez Revalider sur le serveur pour valider les valeurs des champs d’entrée sur le serveur avant envoi.
Sélectionnez l’action Envoyer :
Appuyez sur (Enregistrer) pour enregistrer les propriétés.
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 :
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);
}
}
var som_map
liste l’expression SOM des champs de formulaire adaptatif que vous souhaitez transformer en format standard. Vous pouvez vue l’expression SOM de n’importe quel champ d’un formulaire adaptatif en appuyant sur le champ et en sélectionnant Vue Expression SOM.
A l’aide de ce gestionnaire d’erreurs personnalisé, le formulaire adaptatif convertit les champs répertoriés dans var som_map
au 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.
Exécutez les étapes 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 Éditeur de règles Service d'appel :
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.
Sélectionnez Éditeur de code dans la liste déroulante de sélection de mode.
Appuyez sur Modifier le code.
Supprimez la ligne suivante du code existant :
guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs);
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);
var som_map
liste l’expression SOM des champs de formulaire adaptatif que vous souhaitez transformer en format standard. Vous pouvez vue l’expression SOM de n’importe quel champ d’un formulaire adaptatif en appuyant sur le champ et en sélectionnant Vue Expression SOM 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 comprend 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
au 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.