Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 4 · Exercice de TD
Deux messages pour un champ
Validation et gestion des erreurs · niveau 3 (difficile)
Énoncé
Le champ courriel de CommandeDemande porte deux contraintes au même message. Peuvent-elles échouer ensemble ? Le gestionnaire des erreurs de validation applique distinct() aux messages : dans quel cas cela change-t-il la réponse ? Pourquoi trier par l'ordre des composants du record plutôt que par ordre alphabétique des messages ?
Corrigé
@NotNull échoue si le courriel est absent, et @Pattern considère alors la valeur comme valide : les deux ne peuvent pas échouer ensemble. Mais un champ peut porter deux contraintes indépendantes au même message, comme @Min et @Max sur la note d'un avis : une note de 6 n'échoue qu'à @Max, mais si l'on ajoutait une contrainte « entier pair » au même message, une note de 7 échouerait deux fois et le message apparaîtrait deux fois sans distinct(). Trier par composant reproduit l'ordre du formulaire, que le client affiche de haut en bas ; l'ordre alphabétique des messages n'a aucun sens pour l'utilisateur. Le rapport de tests du projet des corrigés :
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.784 s -- in fr.librairie.ex7.PanneControllerTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.046 s -- in fr.librairie.ex6.ReservationControllerTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.184 s -- in fr.librairie.ex8.LivraisonControllerTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.010 s -- in fr.librairie.Isbn13ValidatorTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.822 s -- in fr.librairie.LivreControllerTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.197 s -- in fr.librairie.CommandeControllerTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.036 s -- in fr.librairie.ex2.AvisControllerTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.023 s -- in fr.librairie.ex5.PrixControllerTest
[INFO] Tests run: 22, Failures: 0, Errors: 0, Skipped: 0
[INFO] BUILD SUCCESS100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.