web-dev-qa-db-fra.com

Plusieurs annotations Spring @RequestMapping

Est-il possible d'utiliser plusieurs annotations de ressort @RequestMapping dans une méthode? Comme:

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

@RequestMapping a un paramètre String[] value. Vous devriez donc pouvoir spécifier plusieurs valeurs de la manière suivante:

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

403
Ed Brannin

De mon test (printemps 3.0.5), @RequestMapping(value={"", "/"}) - seul "/" fonctionne, "" ne fonctionne pas. Cependant, j'ai découvert que cela fonctionne: @RequestMapping(value={"/", " * "}), le " * " ne correspond à rien, ce sera donc le gestionnaire par défaut si aucun autre.

22
Alan Zhong

Ce n'est pas nécessaire. Les annotations RequestMapping prennent 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, vous pouvez donc mettre

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

dans votre fichier de configuration. Cela transmettra toutes les demandes à la racine vers la vue d'accueil.

12
Robby Pond

Il est préférable d'utiliser l'annotation PathVariable si vous voulez toujours obtenir l'URI appelé.

@PostMapping("/pub/{action:a|b|c}")
public JSONObject handlexxx(@PathVariable String action, @RequestBody String reqStr){
...
}

ou analysez-le à partir de l'objet request.

0
CQLI

Pour l'instant, l'utilisation de Spring-Boot - {} ne fonctionnera pas.

@RequestMapping

a toujours String [] en tant que paramètre de valeur, donc la déclaration ressemble à ceci:

 @RequestMapping(value=["/","/index","/login","/home"], method = RequestMethod.GET)
0
Falcon

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

Bien que vous puissiez aussi faire:

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