Est-il possible d'utiliser plusieurs @RequestMapping
annotations sur une méthode?
Comme :
@RequestMapping("/")
@RequestMapping("")
@RequestMapping("/welcome")
public String welcomeHandler(){
return "welcome";
}
Est-il possible d'utiliser plusieurs @RequestMapping
annotations sur une méthode?
Comme :
@RequestMapping("/")
@RequestMapping("")
@RequestMapping("/welcome")
public String welcomeHandler(){
return "welcome";
}
Réponses:
@RequestMapping
a un String[]
paramètre de valeur, vous devriez donc être en mesure de spécifier plusieurs valeurs comme ceci:
@RequestMapping(value={"", "/", "welcome"})
D'après mon test (printemps 3.0.5), @RequestMapping(value={"", "/"})
- ne "/"
fonctionne que, ""
ne fonctionne pas. Cependant, j'ai découvert que cela fonctionne:, @RequestMapping(value={"/", " * "})
le " * "
correspond à n'importe quoi, donc ce sera le gestionnaire par défaut au cas où aucun autre.
N'en a pas besoin. L'annotation RequestMapping prend en charge les caractères génériques et les chemins de style fourmi. 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 transmettra toutes les demandes à la racine à la vue de bienvenue.
Pour l'instant, avec Spring-Boot 2.0.4 - {} ne fonctionnera pas.
@RequestMapping
a toujours String [] comme paramètre de valeur, donc la déclaration ressemble à ceci:
@RequestMapping(value=["/","/index","/login","/home"], method = RequestMethod.GET)
** Mise à jour - Fonctionne avec Spring-Boot 2.2 **
@RequestMapping(value={"/","/index","/login","/home"}, method = RequestMethod.GET)
Ce qui suit 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
aussi bien
Il est préférable d'utiliser l'annotation PathVariable si vous souhaitez toujours obtenir l'URI qui a été appelé.
@PostMapping("/pub/{action:a|b|c}")
public JSONObject handlexxx(@PathVariable String action, @RequestBody String reqStr){
...
}
ou l'analyser à partir de l'objet de demande.