返回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";
}
这些工作相同。哪个更好?有什么区别?
答案 0 :(得分:127)
没有更好的方法。两者都完全有效。您选择使用哪一个取决于哪一个更适合您的应用程序 - Spring允许您以任何方式执行此操作。
从历史上看,这两种方法来自不同版本的Spring。 ModelAndView
方法是在Spring 2.0之前从控制器返回模型和视图信息的主要方法。现在,您可以合并Model
参数和String
返回值,但旧方法仍然有效。
答案 1 :(得分:15)
我想加我2美分。第二种方法更倾向于面向约定,即开发人员明确提到他的观点是什么,但隐含的返回字符串是视图名称。因此编码较少,可读性和标准性。使用ModelAndView
比使用旧方法好多了