为什么“重定向”(即“返回”重定向:/ myPage“`)不能用于我的Tiles页面定义?

为什么我的“重定向”(即return "redirect:/myPage" )不起作用?

注意:“myPage”是Tiles页面定义。

(FWIW,我所遇到的“双重提交”问题的解决方案是使用重定向到“myPage”。但我无法让“重定向”工作。)

到目前为止,我已尝试过以下内容。

 return new ModelAndView("redirect:/myPage")) return new ModelAndView("redirect:/myPage.jsp")) return new ModelAndView("redirect:/views/myPage")) return new ModelAndView("redirect:/views/myPage.jsp")) return new ModelAndView(new RedirectView("myPage")) return new ModelAndView(new RedirectView("myPage.jsp")) return new ModelAndView(new RedirectView("/views/myPage")) return new ModelAndView(new RedirectView("/views/myPage.jsp")) return new ModelAndView(new RedirectView("/WEB-INF/views/myPage")) return new ModelAndView(new RedirectView("/WEB-INF/views/myPage.jsp")) 

但是,无济于事。 以上url都不会重定向工作。 也就是说,我得到HTTP状态404 – [描述,请求的资源不可用]。

(注意:主布局模板和构成“myPage”页面定义的JSP文件位于“WEB-INF / views”文件夹中。)

以下是一些相关的配置信息。

什么可能阻止我重定向到Tiles页面定义:“myPage”?


applicationContext.xml中

               org.springframework.web.servlet.view.tiles2.TilesView      /WEB-INF/tiles.xml     

web.xml(片段)

    - - -  appServlet org.springframework.web.servlet.DispatcherServlet  contextConfigLocation /WEB-INF/servlet-context.xml  1   appServlet /  - - -  

tiles.xml

           - - -          - - -  

layout01.jsp

                 

subpage01.jsp

    

一些环境信息:

  • Spring v3.2.x
  • Tiles v2.2
  • Java v1.6x
  • Internet Explorer 8浏览器。

感谢Sotirios的评论留下的暗示,我发现我无法“重定向”到“myPage”与Tiles无关。

相反,在更难看之后,我意识到这是与“myPage”相关联的控制器的配置。

我必须将以下“公共ModelAndView myPage(HttpSession会话)”方法添加到Controller(请参阅下面的代码段),以便执行成功的重定向(即,从另一个控制器)…即使用

 return new ModelAndView("redirect:/myPage"); 

问题是“myPage”控制器没有包含“公共ModelAndView myPage(HttpSession会话)”方法……(再次感谢Sotirius)。

下面是“公共ModelAndView myPage(HttpSession session)”方法 – 代码片段)

  @Controller @Scope("session") @SessionAttributes( { "sharedList" }) public class MyPageController implements Serializable { @ModelAttribute("sharedList") public List createSharedList() { return new ArrayList(); } @RequestMapping(value = "/myPage", method = RequestMethod.GET) @ResponseBody public ModelAndView myPage(HttpSession session) { createSharedList(); return new ModelAndView("myPage"); } - - -