web-dev-qa-db-fra.com

différence entre rediriger et rediriger à l'intérieur de modelandview

Dans la classe de contrôleur de printemps pour rediriger vers une URL

  • certains endroits utilisent tous return "redirect:/abc.htm";.

  • en utilisant également return new ModelAndView("redirect:/abc.htm").

N'importe qui, veuillez expliquer la différence et les similitudes des deux déclarations.

Et dans quelle situation il doit l'utiliser.


Rohit:

J'utilise RedirectAttribute pour obtenir des valeurs de l'ancienne URL. Dans ce cas, j'obtiens de la valeur en utilisant ce return "redirect:/abc.htm"; Mais pas dans cette return new ModelAndView("redirect:/abc.htm").
Y a-t-il une différence dans RedirectAttributes

32
Monicka Akilan

Les déclarations:

return "redirect:/abc.htm"
return new ModelAndView("redirect:/abc.htm")

faites la même chose: redirects la demande à abc.htm. Si un nom de vue renvoyé qui a le préfixe redirect:, ceci est reconnu comme une indication spéciale qu'une redirection est nécessaire. Le reste du nom de la vue sera traité comme l'URL de redirection.

Avec la déclaration

return "redirect:/abc.htm"

vous ne pouvez renvoyer que le nom de la vue de redirection.

Avec ModelAndView, vous pouvez renvoyer à la fois model et view dans une seule valeur de retour:

ModelAndView modelAndView =  new ModelAndView("redirect:/abc.htm");
modelAndView.addObject("modelAttribute" , new ModelAttribute());
return modelAndView;

Mais la valeur d'attribut ne sera pas disponible dans la nouvelle demande de redirection que le client (navigateur) fera pour l'URL /abc.htm. La meilleure utilisation de ModelAndView est lorsque vous transférez la demande vers une nouvelle URL, afin que vous puissiez renvoyer model et view ensemble dans une seule valeur de retour. Pour les scénarios de redirection, si vous souhaitez transmettre des attributs, vous devez utiliser RedirectAttributes.

44
Debojit Saikia