2015-02-28 2 views
2
@RequestMapping({"/someurl"}) 
public String execute(Model model) { 
    if (someCondition) { 
     return "forward:/someUrlA"; 
    } else { 
     return "forward:/someUrlB"; 
    } 
} 

Je tente de transférer la demande d'un contrôleur à un autre contrôleur. Quand j'exécute cela, le contrôleur retourne la chaîne comme réponse au lieu de la transmettre à l'autre contrôleur ... Quelqu'un peut-il s'il vous plaît indiquer ce que je manque?Printemps @RequestMapping Transfert du contrôleur

+0

Est-ce votre contrôleur un '@ controller' ou un' @ RestController'? En utilisant aussi l'url comme variable de chemin (le "{}") me semble mal. –

+0

Cela aurait dû marcher. Comment avez-vous mappé '/ someUrlA' et'/someUrlB'? En outre, sauf si vous liez plusieurs chemins au même gestionnaire, vous pouvez spécifier '@RequestMapping ("/someurl ")'. – sh0rug0ru

Répondre

1

Vous pouvez rediriger la requête au lieu de la rediriger.

donc changer votre retour avec

if (someCondition) { 
     return "redirect:/someUrlA"; 
    } else { 
     return "redirect:/someUrlB"; 
    } 

Pour plus de détails refer this documentation

+1

Une redirection enverra une réponse HTTP 302 au client et forcera le client à faire une autre requête au serveur. La question portait spécifiquement sur le transfert, qui est entièrement côté serveur. – sh0rug0ru