Spring 从一个控制器方法重定向到另一个控制器方法
我在应用程序中使用Spring3和Tiles 2,在重定向方面遇到了一些问题。 最好,我希望能够从Controller1方法调用或重定向到Controller2方法,但到目前为止还没有成功 我已尝试在pageviews.properties文件中创建一个新条目。这样,我就可以从Controller1返回这个名称,它将从xml文件中查找我的tiles def名称Spring 从一个控制器方法重定向到另一个控制器方法,spring,jsp,spring-mvc,tiles,Spring,Jsp,Spring Mvc,Tiles,我在应用程序中使用Spring3和Tiles 2,在重定向方面遇到了一些问题。 最好,我希望能够从Controller1方法调用或重定向到Controller2方法,但到目前为止还没有成功 我已尝试在pageviews.properties文件中创建一个新条目。这样,我就可以从Controller1返回这个名称,它将从xml文件中查找我的tiles def名称 createRejectionEmail.(parent)=tilesView createRejectionEmail.url=cre
createRejectionEmail.(parent)=tilesView
createRejectionEmail.url=createRejectionEmail.page
redirectRejectionEmail.(class)=org.springframework.web.servlet.view.RedirectView
rediectRejectionEmail.contextRelative=true
redirectRejectionEmail.url=createRejectionEmail.page
但是,当我尝试返回如下所示的URL时,URL包含createRejectionEmail作为URL的一部分,而不是使用它在tiles defs中进行查找。
mav.setViewName(“重定向拒绝邮件”);
返回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>
/WEB-INF/jsp/**/views.xml
任何帮助和指导都将不胜感激 您可以从控制器将返回类型更改为ModelAndView,并返回下面的代码。这将重新引导请求并为新URL调用控制器
return new ModelAndView("redirect:/myURL");
或者,您可以在控制器方法中接受HttpServletResponse并返回重定向
public void myController(HttpServletResponse response){
response.sendRedirect("/myURL");
}
当此方法处理程序调用时,它将重定向到/app/timeout控制器。Hi感谢您的响应。我尝试了此操作,得到了以下结果。无法解析名为“重定向:/myapppath/status/displayEmailRejectionForm.html”的servlet中名为“Spring MVC for OA”的视图。我应该使用不同的视图解析器吗?目前,我们正在使用ResourceBundleViewResolver和tiles2OK Whow!它起作用了!非常感谢你的帮助。我还必须将UrlBasedViewResolver添加到我的应用程序上下文中。我真的很感谢你花时间回复!即使使用@RequestMapping注释方法的字符串返回类型,这似乎也可以正常工作。就像Carl的例子一样,关键是添加UrlBasedViewResolver类配置。这对我来说是可行的,没有任何修改。使用spring 4.1+和hibernate 5.0+。这是一个很好的方法,最好的方法是,如果应用程序具有上下文,则此方法无需显式传递即可解决它。
@RequestMapping(value = "/timeout", method = RequestMethod.GET)
public ModelAndView loginForm(HttpServletRequest request,HttpServletResponse response) {
return new ModelAndView("redirect:/app/timeout");
}