300 votes

Comment utiliser plusieurs annotations @RequestMapping dans Spring ?

Est-il possible d'utiliser plusieurs @RequestMapping des annotations sur une méthode ?

Comme :

@RequestMapping("/")
@RequestMapping("")
@RequestMapping("/welcome")
public String welcomeHandler(){
  return "welcome";
}

525voto

Ed Brannin Points 2723

@RequestMapping a un String[] Vous devriez donc être en mesure de spécifier plusieurs valeurs comme ceci :

@RequestMapping(value={"", "/", "welcome"})

2 votes

Cela dit, j'ai du mal à faire fonctionner les valeurs "" ou "/" dans mon application. Est-ce qu'elles fonctionnent pour vous ?

0 votes

Existe-t-il un moyen d'associer différentes vues de réussite et vues de formulaire à chaque URL de demande en utilisant plusieurs annotations ?

0 votes

@EdBrannin J'ai besoin de beaucoup de choses à utiliser, personnalisées, en-tête, consommations, paramètres, etc

27voto

FastZhong Points 131

D'après mon test (spring 3.0.5), @RequestMapping(value={"", "/"}) - seulement "/" travaux, "" ne le fait pas. Cependant, j'ai découvert que ceci fonctionne : @RequestMapping(value={"/", " * "}) le " * " ne correspond à rien, il sera donc le gestionnaire par défaut au cas où il n'y en aurait pas d'autres.

14voto

Robby Pond Points 37875

Ce n'est pas nécessaire. L'annotation RequestMapping prend en charge les caractères génériques et les chemins de style Ant. On dirait aussi que vous voulez juste une vue par défaut, donc vous pouvez mettre

<mvc:view-controller path="/" view-name="welcome"/>

dans votre fichier de configuration. Cela permettra de transférer toutes les demandes à la racine vers la vue de bienvenue.

0 votes

Doit-il y avoir quelque chose entre ces deux lignes ? J'utilise le FreeMarkerViewResolver - je devrais donc procéder de cette façon... Eh bien, je suppose que je pourrais simplement créer plusieurs ViewResolver.

2 votes

Elle n'offre pas la souplesse que des annotations RequestMapping multiples permettraient d'obtenir. Par exemple, si je veux qu'une méthode prenne en charge la valeur "/a" avec POST ou la valeur "/b" avec GET. Bien sûr, la solution de contournement est assez facile (refactoring de la fonctionnalité dans une troisième méthode), mais il suffit de dire que ce serait utile.

9voto

Marco Points 332

Le chemin le plus court est : @RequestMapping({"", "/", "welcome"})

Bien que vous puissiez aussi le faire :

  • @RequestMapping(value={"", "/", "welcome"})
  • @RequestMapping(path={"", "/", "welcome"})

7voto

Le texte suivant est également acceptable :

@GetMapping(path = { "/{pathVariable1}/{pathVariable1}/somePath", 
                     "/fixedPath/{some-name}/{some-id}/fixed" }, 
            produces = "application/json")

La même chose peut être appliquée à @RequestMapping également

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