RedirectView vs redirect:在spring mvc中

时间:2015-06-08 09:38:11

标签: spring spring-mvc

最好用于在spring mvc中重定向url:

return new ModelAndView(new RedirectView("../abc/list.vm"));

return new ModelAndView("redirect:DummyRedirectPage.htm");

1 个答案:

答案 0 :(得分:4)

ModelAndView对象包含一个引用其视图对象的实例变量,该变量可以是:

  • 具体View实施,例如您使用时的情况:

    new ModelAndView(new RedirectView("../abc/list.vm"))
    
  • 一个String对象,其中包含以 重定向为前缀的视图的符号名称: 转发: ,使用时就是这种情况:

    new ModelAndView("redirect:DummyRedirectPage.htm")
    

现在,当调用Spring基本Web条目DispatcherServlet来呈现View时,它将尝试针对给定的ModelAndView对象解析请求的视图,或者获取引用在其View子实现中,它提供或解析View并从ModelAndView视图字符串表示中创建它:

protected void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response) throws Exception {
    // ...
    View view;
    if (mv.isReference()) {
        // Resolve the view and instantiate it...
    }
    else {
        // No need to lookup: the ModelAndView object contains the actual View object.
        view = mv.getView();
        // ...
    }
    // ...
}

请注意,如果视图是org.springframework.web.servlet.ModelAndView#isReference对象,则true会返回String

鉴于以下细节,我假设第一个ModelAndView涉及较少的计算,因此可能优先于后者。