2 votes

Spring mvc réécrit l'url "monapp.com/Foo/12345/test-one" en "monapp.com/Foo/12345/test-one-a-b".

Je veux utiliser un contrôleur spring mvc normal et un mappage de requête utilisant des variables de chemin.

Je ne veux pas faire suivre ou rediriger, juste changer la chaîne que l'utilisateur voit.

@RequestMapping(value = "/Foo/{id}/*", method = RequestMethod.GET)
public ModelAndView getFoo(@PathVariable final String friendlyUrl) {
//how can I rewite the url that user sees ?
}

(le même comportement que lorsque vous changez le titre d'une question existante sur stackoverflow)

1voto

burna Points 2379

Si vous observez le trafic dans wireshark, firebug ou autre, vous verrez que stackoverflow envoie un HTTP 301 Moved Permanently à l'URL finale. Vous pourriez faire la même chose.

Pour cela, vous avez besoin du HttpServletResponse vous pouvez l'ajouter à la signature de la méthode pour la faire injecter. Définir la redirection permanente :

String rightUrl = urlCompleter.complete(friendlyUrl);
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", rightUrl);

Où vous devez mettre en œuvre urlCompleter par vous-même, par exemple en regardant dans la table des entrées de la base de données et en localisant le bon composant url.

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