7
votes

Spring: même objet, validation différente

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
    }
    ...
}


0 commentaires

4 Réponses :


4
votes

C'est le problème de la validation déclarative, il n'est pas très facile de faire ce genre de chose.

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 BindingResult a des méthodes pour vous de marquer explicitement les champs comme invalides.

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é.


1 commentaires

Il y a une solution (maintenant?) Utilisation des groupes de contraintes JSR-303. Stackoverflow.com/a/36345405/1030527



0
votes

Quelques pointeurs. Je ne suis pas sûr qu'ils seront utiles, cependant:

Documents de printemps dis que:

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

javax.validation < / Code> a deux interfaces * context . Entrez dans plus de détails avec eux pour voir si une validation différente peut être obtenue dans différents contextes.


0 commentaires

0
votes

au lieu d'utiliser la fonction HasErrors (), utilisez HASFIELDERRORRORS (nom de terrain) et validez uniquement les champs particuliers requis par le formulaire.


0 commentaires

8
votes

Vous pouvez utiliser Les groupes de contraintes JSR-303 pour atteindre ceci. xxx

puis dans le contrôleur, au lieu d'utiliser @valid , utilisez l'annotation @validated qui permet de spécifier un groupe de contraintes à Appliquer.

voir Ce blog post et Celui-ci aussi pour plus d'informations.

Il y a aussi ce Superbe post pour l'utilisation de printemps .


1 commentaires

Incroyable, utilisée du printemps depuis des années et seulement maintenant réalisa que c'était possible !!