web-dev-qa-db-fra.com

Rediriger d'une méthode de contrôleur vers une autre méthode de contrôleur

J'utilise Spring 3 et Tiles 2 dans mon application et j'ai un peu de mal à rediriger. De préférence, j'aimerais pouvoir simplement appeler ou rediriger d'une méthode Controller1 vers la méthode Controller2, mais jusqu'à présent, j'ai échoué.

J'ai essayé de créer une nouvelle entrée dans le fichier pageviews.properties. De cette façon, je pourrais simplement retourner ce nom à partir de Controller1 et il chercherait mon nom def tuiles dans les fichiers xml.

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

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

Mais, lorsque j'essaie de retourner comme indiqué ci-dessous, mon URL contient createRejectionEmail en tant qu'élément de l'URL - au lieu de l'utiliser pour faire la recherche dans les définitions de tuiles. 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>

Ma configuration actuelle est ci-dessous.

<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>

Toute aide et conseil serait grandement apprécié!

25
Carl

À partir de votre contrôleur, vous pouvez changer le type de retour pour être un ModelAndView et retourner le code ci-dessous. Cela redirigera la demande et appellera le contrôleur pour la nouvelle URL.

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

Vous pouvez également prendre HttpServletResponse dans votre méthode de contrôleur et renvoyer une redirection.

public void myController(HttpServletResponse response){
response.sendRedirect("/myURL");
}
52
Stephen Dillon
@RequestMapping(value = "/timeout", method = RequestMethod.GET)
    public ModelAndView loginForm(HttpServletRequest request,HttpServletResponse response) {


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

    }

Lorsque ce gestionnaire de méthode appelle, il redirige vers le contrôleur/app/timeout.