返回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; }
返回字符串的方式
@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"; }
这些工作相同。哪个更好的方法?有什么区别?
没有更好的办法。两者都是完全有效的。您选择使用哪一种取决于哪个更适合您的应用程序-Spring允许您以任何一种方式进行操作。
从历史上看,这两种方法来自不同版本的Spring。该ModelAndView方法是在Spring 2.0之前的版本中从控制器返回模型和视图信息的主要方法。现在可以组合Model参数和String返回值,但是旧方法仍然有效。
ModelAndView
Model
String