Перенаправление от одного метода контроллера к другому методу контроллера
Я использую Spring 3 и плитки 2 в своем приложении и имею немного проблем с перенаправлением. Предпочтительно, я хотел бы иметь возможность просто вызывать или перенаправлять из метода Controller1 в метод Controller2, но до сих пор не удалось.
Я попытался создать новую запись в просмотре страниц.файл свойств. Таким образом, я мог бы просто вернуть это имя из Controller1, и он будет искать мое имя плитки def из xml-файлов.
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-адреса-вместо того, чтобы использовать это, чтобы искать в плитках defs. мав.setViewName ("redirectRejectionEmail"); возвращение мав;
<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 ответов
С вашего контроллера вы можете изменить тип возврата, чтобы быть ModelAndView и код возврата ниже. Это перенаправит запрос и вызовет контроллер для нового URL-адреса.
return new ModelAndView("redirect:/myURL");
в качестве альтернативы вы можете взять HttpServletResponse в своем методе контроллера и вернуть перенаправление.
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");
}
при вызове этого обработчика метода он перенаправляется на контроллер/app / timeout.