La voie du retour ModelAndView
@RequestMapping(value = "/list", method = RequestMethod.GET)
public ModelAndView list(
@UserAuth UserAuth user,
ModelAndView mav) {
if (!user.isAuthenticated()) {
mav.setViewName("redirect:http://www.test.com/login.jsp");
return mav;
}
mav.setViewName("list");
mav.addObject("articles", listService.getLists());
return mav;
}
Le chemin du retour String
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(
@UserAuth UserAuth user,
Model model) {
if (!user.isAuthenticated()) {
return "redirect:http://www.test.com/login.jsp";
}
model.addAttribute("articles", listService.getLists());
return "list";
}
Ceux-ci fonctionnent même. quel est le meilleur moyen? et quelle est la différence?
Il n'y a pas de meilleur moyen. Les deux sont parfaitement valables. Celui que vous choisissez dépend de celui qui convient le mieux à votre application - Spring vous permet de le faire de toute façon.
Historiquement, les deux approches proviennent de versions différentes de Spring. L'approche ModelAndView
était le moyen principal de renvoyer à la fois les informations de modèle et d'affichage d'un contrôleur dans les versions antérieures à Spring 2.0. Vous pouvez maintenant combiner le paramètre Model
et la valeur de retour String
, mais l'ancienne approche est toujours valide.
Je voudrais ajouter moi 2 cents aussi. La seconde approche est plus orientée convention. Le développeur mentionne explicitement son point de vue, mais implique implicitement que la chaîne de retour est le nom de la vue. Donc, moins de codage, lisible et standard. Beaucoup mieux que l'ancienne méthode avec ModelAndView