SpringMVC - Method可以返回Redirect(String)或ModelAndView

时间:2015-12-15 21:07:55

标签: spring spring-mvc

我的方法做出决定;在一种情况下,它重定向到URL。在另一种情况下,它必须进行ModelAndView JSP刷新。

这种方法的签名应该是什么?

现在,

public String removeForm(final HttpServletRequest request) throws Exception
{
   if (condition1) {
      return "redirect:/myaction";
   }
   else {
      // Need to do a View, or a ModelAndView?
   }

}

相反,我的方法可能是基于ModelAndView的方法,但我需要在一个案例中返回一个Redirect字符串。如何将它们结合起来?

2 个答案:

答案 0 :(得分:5)

最简单的方法是使用Object作为返回类型。

public Object removeForm(final HttpServletRequest request) throws Exception
{
   if (condition1) {
      return "redirect:/myaction";
   } else {
     return new ModelAndView("jspName", modelMap);
   }    
}

但更优雅的是使用ModelAndView并在重定向情况下使用RedirectView

public ModelAndView removeForm(final HttpServletRequest request) throws Exception
{
   if (condition1) {
      return new ModelAndView(new RedirectView("/myaction"));
   } else {
       return new ModelAndView("jspName", modelMap);
   )
}

答案 1 :(得分:2)

如果需要始终返回 String ,可以在方法中使用Model类并将视图名称作为String返回,它就像返回ModelAndView一样:

 public String removeForm(final HttpServletRequest request, Model model)throws Exception
 {
     if (condition1) {
        return "redirect:/myaction";
     }else {
        model.addAtribute("objectName",object);
        return "viewName";
    }
 }