哪个更好,在spring3控制器上返回“ModelAndView”或“String”

返回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; } 

返回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"; } 

这些工作一样。 哪个更好? 有什么区别?

没有更好的办法。 两者都是完全有效的。 你select哪一个取决于哪一个更适合你的应用程序–Spring可以让你做到这一点。

从历史上看,这两种方法来自Spring的不同版本。 ModelAndView方法是在Spring 2.0之前从控制器返回模型和视图信息的主要方法。 现在你可以结合Model参数和String返回值,但是旧的方法仍然有效。

我也想加2分钱。 第二种方法更倾向于面向公约,即开发者明确提及他的观点,但隐含的是返回string是视图名称。 所以编码less,可读性强,标准。 使用ModelAndView比旧的方法好得多