5 votes

Mappage d'une même URL vers différents contrôleurs dans spring en fonction du paramètre de requête

J'utilise un contrôleur basé sur les annotations de Spring. Je veux que mon URL /user/messages mappe vers un contrôleur a si la balise query parameter est présente, sinon vers un contrôleur différent b. Ceci est nécessaire parce que lorsque la balise parameter est présente, d'autres paramètres peuvent être présents en même temps que ceux que je veux gérer dans un contrôleur différent pour garder l'implémentation propre. Existe-t-il également une autre solution élégante à ce problème ?

9voto

Ralph Points 42744

Vous pouvez utiliser le params de l'attribut @RequestMapping pour sélectionner une méthode de contrôle en fonction des paramètres Http.

Voir cet exemple :

@RequestMapping(params = "form", method = RequestMethod.GET)
public ModelAndView createForm() {
    ...
}

@RequestMapping(method = RequestMethod.GET)
public ModelAndView list() {
    ...
}

C'est un style REST comme celui utilisé par Spring ROO : si la requête contient le paramètre forms alors le createForm est utilisé, sinon le gestionnaire list est utilisée.

3voto

rajasaur Points 2020

Si vous souhaitez emprunter la voie de Spring, vous pouvez utiliser le HandlerInterceptor mentionné dans le document suivant aquí . L'intercepteur peut jeter un coup d'oeil à votre paramètre de requête et rediriger le lien vers quelque chose d'autre qui peut être attrapé par un autre SimpleUrlMapper.

L'autre moyen est de l'envoyer à un seul contrôleur et de laisser le contrôleur faire suivre une autre action si le paramètre de requête est "b".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X