Spring MVC : la Redirection à partir d'un contrôleur de base - Comment obtenir le chemin d'accès pour rediriger vers?
J'ai cherché et cherché et n'ai rien trouvé qui dit que ce n'est pas possible, ni rien qui explique comment le faire.
Si vous avez un Contrôleur de Base qui est étendu, je comprends que la demande mappé méthodes sont également hérité.
Donc, avec....
public abstract class BaseController
{
@RequestMapping(value="hello", method=RequestMethod.GET)
public String hello(Model model) {
return "hello-view;
}
...un Contrôleur comme si ...
@Controller
@RequestMapping("/admin/")
public abstract class AdminController
{
....
}
...va hériter d'une méthode d'écoute à /admin/bonjour qui renvoie le bonjour.
C'est toute fine.
Mais que faire si j'ai un BaseController méthode qui redirige:
public abstract class BaseController
{
@RequestMapping(value="hello", method=RequestMethod.POST)
public String hello(Model model) {
return "redirect:/success/;
}
Si je comprends bien la redirection nécessite soit une URL relative ou absolue plutôt qu'un viewname?
Alors, comment est-ce que mon AdminController assurer la redirection vers /admin/succès/?
Comment le BaseController méthode de obtenir une poignée sur le niveau de la classe @requestMapping sur mon AdminController?
Est-ce possible?
OriginalL'auteur n99 | 2013-03-19
Vous devez vous connecter pour publier un commentaire.
Une option:
et voici l'admin contrôleur.
Une autre option qui implique une réflexion qui pourrait fonctionner...:
content que cela a fonctionné pour vous 🙂
OriginalL'auteur digitaljoel
Selon http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-redirecting-redirect-prefix
redirect:/myapp/some/resource
redirigera par rapport à l'actuel contexte de Servlet.Mon chèque: le contexte de l'Application est
topjava
, Servlet contexte estmeals
,demande
http://localhost:8080/topjava/meals/update?...
redirigé par
redirect:meals
à http://localhost:8080/topjava/meals/mealsredirigé par
redirect:/meals
à http://localhost:8080/topjava/mealsOriginalL'auteur GKislin
Au Printemps pas besoin de donner une url relative, comme
au lieu de code ci-dessus, directement, vous pouvez donner comme cette
Par défaut, il prendra le chemin de contexte.
OriginalL'auteur santhoshkumar
Aussi longtemps que vous n'avez pas besoin de quelque chose de dynamique, je voudrais juste une redirection vers le requestmapping dans la chaîne. N'avez pas utilisé de redirection moi-même, mais encore la cartographie de votre admin succès serait:
return "redirect:/admin/success/"
Cela devrait créer une redirection de navigateur de votre contrôleur avec le correspondant requestmapping.
Une autre possibilité serait d'utiliser la réflexion et de saisir le requestmapping annotation de vos parents.
Aye vrai. Je ne sais pas pourquoi j'ai raté ça! Votre réponse est une bonne possibilité.
OriginalL'auteur Martin Frey