从一个控制器方法重定向到另一个控制器方法

时间:2013-06-20 16:26:11

标签: spring jsp spring-mvc tiles

我在我的应用程序中使用Spring 3和Tiles 2并且在重定向时遇到了一些麻烦。 最好,我希望能够从Controller1方法调用或重定向到Controller2方法,但到目前为止都没有成功。

我试图在pageviews.properties文件中创建一个新条目。这样我就可以从Controller1返回这个名字,它会从xml文件中查找我的tile def名称。

createRejectionEmail.(parent)=tilesView
createRejectionEmail.url=createRejectionEmail.page

redirectRejectionEmail.(class)=org.springframework.web.servlet.view.RedirectView
rediectRejectionEmail.contextRelative=true
redirectRejectionEmail.url=createRejectionEmail.page

但是,当我尝试返回如下所示时,我的URL包含createRejectionEmail作为URL的一部分 - 而不是使用它来查找tile定义。     mav.setViewName( “redirectRejectionEmail”);     return mav;

<definition name="createRejectionEmail.page" extends="brandedLayout">
  <put-attribute name="targetFunction" value="status" />
  <put-attribute name="content" value="/WEB  INF/jsp/pages/status/createRejectionEmail.jsp" />
</definition>

我当前的配置如下。

<bean id="resourceViewResolver"
class="org.springframework.web.servlet.view.ResourceBundleViewResolver"
p:order="0" p:basename="config.spring.viewresolution.pageviews"/>



<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
   <list>
  <value>/WEB-INF/jsp/**/views.xml</value>
    </list>
</property>
</bean>

非常感谢任何帮助和指导!

2 个答案:

答案 0 :(得分:52)

您可以从控制器将返回类型更改为ModelAndView并返回以下代码。这将重定向请求并调用控制器以获取新URL。

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

或者,您可以在控制器方法中接受HttpServletResponse并返回重定向。

public void myController(HttpServletResponse response){
response.sendRedirect("/myURL");
}

答案 1 :(得分:7)

@RequestMapping(value = "/timeout", method = RequestMethod.GET)
    public ModelAndView loginForm(HttpServletRequest request,HttpServletResponse response) {


                return new ModelAndView("redirect:/app/timeout");

    }

当此方法处理程序调用时,它会重定向到/ app / timeout控制器。