一尘不染

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

spring-mvc

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

这些工作相同。哪个更好的方法?有什么区别?


阅读 353

收藏
2020-06-01

共1个答案

一尘不染

没有更好的办法。两者都是完全有效的。您选择使用哪一种取决于哪个更适合您的应用程序-Spring允许您以任何一种方式进行操作。

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

2020-06-01