Estoy usando Spring 3 y Tiles 2 en mi aplicación y tengo un poco de problemas con la redirección. Preferiblemente, me gustaría ser capaz de simplemente llamar o redirigir de un método Controller1 a Controller2 método, pero hasta ahora no han tenido éxito.
He intentado crear una nueva entrada en el archivo pageviews.properties. De esa manera yo sólo podría devolver este nombre de Controller1 y buscaría mi azulejos def nombre de los archivos xml.
createRejectionEmail.(parent)=tilesView
createRejectionEmail.url=createRejectionEmail.page
redirectRejectionEmail.(class)=org.springframework.web.servlet.view.RedirectView
rediectRejectionEmail.contextRelative=true
redirectRejectionEmail.url=createRejectionEmail.page
Pero, cuando trato de volver como se muestra a continuación mi la URL contiene createRejectionEmail como parte de la URL - en lugar de usar eso para hacer la búsqueda en los azulejos defs. 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>
Mi configuración actual es la siguiente.
<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>
¡Cualquier ayuda y orientación sería muy apreciada!
Desde tu controlador puedes cambiar el tipo de retorno para que sea un ModelAndView y el código de retorno a continuación. Esto redirigirá la solicitud y llamar al controlador para la nueva URL.
return new ModelAndView("redirect:/myURL");
Alternativamente, usted podría tomar en el HttpServletResponse en su método de controlador y devolver una redirección.
public void myController(HttpServletResponse response){
response.sendRedirect("/myURL");
}
@RequestMapping(value = "/timeout", method = RequestMethod.GET)
public ModelAndView loginForm(HttpServletRequest request,HttpServletResponse response) {
return new ModelAndView("redirect:/app/timeout");
}
Cuando se llama a este método, se redirige al controlador /app/timeout.