J'ai un objet appelé utilisateur où je sauvegarde toutes les données de l'utilisateur. J'ai des annotations pour effectuer la validation et cela fonctionne bien.
public String getUserDetails(@Valid @ModelAttribute("User") User user, BindingResult result, Model model){ if(result.hasErrors()){ //There have been errors } ... }
4 Réponses :
C'est le problème de la validation déclarative, il n'est pas très facile de faire ce genre de chose. P>
La solution la plus simple consiste à supprimer les annotations de validation du champ Mot de passe et à valider le champ manuellement dans le contrôleur. La classe code> BindingResult code> a des méthodes pour vous de marquer explicitement les champs comme invalides. P>
Une autre alternative serait de créer deux sous-classes de la classe de formulaire, chacune avec son propre champ de mot de passe, une avec des annotations de validation, et une seule, et utilisez le approprié à l'endroit approprié. P>
Il y a une solution (maintenant?) Utilisation des groupes de contraintes JSR-303. Stackoverflow.com/a/36345405/1030527
Quelques pointeurs. Je ne suis pas sûr qu'ils seront utiles, cependant: p>
Documents de printemps a > dis que: p>
Vous pouvez appeler Binder.setvalidator (validateur) dans le rappel @Initbinder d'un contrôleur @. Cela vous permet de configurer une instance de validateur par classe @Controller p>
blockQuote>
javax.validation < / Code>
a deux interfaces code> * context code>. Entrez dans plus de détails avec eux pour voir si une validation différente peut être obtenue dans différents contextes. P>
au lieu d'utiliser la fonction HasErrors (), utilisez HASFIELDERRORRORS (nom de terrain) et validez uniquement les champs particuliers requis par le formulaire. P>
Vous pouvez utiliser Les groupes de contraintes JSR-303 pour atteindre ceci. puis dans le contrôleur, au lieu d'utiliser voir Ce blog post et Celui-ci aussi pour plus d'informations. P> Il y a aussi ce Superbe post pour l'utilisation de printemps . p> p> @valid code>, utilisez l'annotation
@validated code> qui permet de spécifier un groupe de contraintes à Appliquer. p>
Incroyable, utilisée du printemps depuis des années et seulement maintenant réalisa que c'était possible !!