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