Quelle est l’utilisation de l’interface BindingResult dans Spring MVC?

Est-ce que BindingResult est utile pour lier les exceptions avec view ou autre chose?

quelle est l’utilisation exacte de BindingResult ?

Ou est-ce utile dans l’atsortingbut de modèle de liaison avec la vue.

Exemple particulier: utilisez un object BindingResult comme argument pour une méthode de validation d’un validateur dans un contrôleur.

Ensuite, vous pouvez vérifier cet object à la recherche d’erreurs de validation:

 validator.validate(modelObject, bindingResult); if (bindingResult.hasErrors()) { // do something } 

Il est important de noter que l’ordre des parameters est important pour le spring. Le BindingResult doit venir juste après le formulaire en cours de validation. De même, le paramètre [optionnel] Model doit venir après le BindingResult. Exemple:

Valide:

 @RequestMapping(value = "/entry/updateQuantity", method = RequestMethod.POST) public Ssortingng updateEntryQuantity(@Valid final UpdateQuantityForm form, final BindingResult bindingResult, @RequestParam("pk") final long pk, final Model model) { } 

Pas valide:

 RequestMapping(value = "/entry/updateQuantity", method = RequestMethod.POST) public Ssortingng updateEntryQuantity(@Valid final UpdateQuantityForm form, @RequestParam("pk") final long pk, final BindingResult bindingResult, final Model model) { } 

Fondamentalement, BindingResult est une interface qui dicte comment l’object qui stocke le résultat de la validation doit stocker et récupérer le résultat de la validation (erreurs, tentative de liaison avec des champs interdits, etc.).

Didacticiel de validation de formulaire MVC avec annotations de Spring :

[ BindingResult ] est l’object de Spring qui contient le résultat de la validation et de la liaison et contient des erreurs susceptibles de s’être produites. BindingResult doit venir immédiatement après l’object de modèle qui est validé, sinon Spring ne parviendra pas à valider l’object et à lancer une exception.

Lorsque Spring voit @Valid , il essaie de trouver le validateur pour l’object en cours de validation. Spring récupère automatiquement les annotations de validation si «annotation» est activé. Spring appelle alors le validateur et place des erreurs dans BindingResult et ajoute le BindingResult au modèle de vue.

De la documentation officielle du spring :

Interface générale qui représente les résultats de liaison . Étend l’interface pour les fonctionnalités d’enregistrement des erreurs , permettant d’appliquer un validateur et ajoute une parsing spécifique à la liaison et la création de modèles.

Sert de détenteur de résultat pour un DataBinder , obtenu via la méthode DataBinder.getBindingResult (). Les implémentations BindingResult peuvent également être utilisées directement, par exemple pour invoquer un validateur (par exemple, dans le cadre d’un test unitaire).

BindingResult est utilisé pour la validation.

Exemple:-

  public @ResponseBody Ssortingng nutzer(@ModelAtsortingbute(value="nutzer") Nutzer nutzer, BindingResult ergebnis){ Ssortingng ergebnisText; if(!ergebnis.hasErrors()){ nutzerList.add(nutzer); ergebnisText = "Anzahl: " + nutzerList.size(); }else{ ergebnisText = "Error!!!!!!!!!!!"; } return ergebnisText; } 

Eh bien c’est un processus séquentiel. La requête traite d’abord par FrontController puis se déplace vers notre propre contrôleur de personnalisation avec l’annotation @Controller.

mais notre méthode de contrôleur lie le bean en utilisant modelatsortingbute et nous effectuons également peu de validations sur les valeurs du bean.

Ainsi, au lieu de déplacer la requête vers notre classe de contrôleur, FrontController le déplace vers un intercepteur qui crée l’object temp de notre bean et valide les valeurs. Si la validation réussit, associez les valeurs temp obj à notre bean réel qui est stocké dans @ModelAtsortingbute sinon, si la validation échoue, elle ne lie pas et déplace la page resp vers la page d’erreur ou n’importe où.

entrer la description de l'image ici