Múltiplas anotações de primavera @RequestMapping
-
22-09-2019 - |
Pergunta
É possível usar várias anotações de primavera @RequestMapping em um método? Curti:
@RequestMapping("/")
@RequestMapping("")
@RequestMapping("/welcome")
public String welcomeHandler(){
return("welcome");
}
Solução
@RequestMapping
tem um String[]
Parâmetro de valor, para que você possa especificar vários valores como este:
@RequestMapping(value={"", "/", "welcome"})
Outras dicas
Do meu teste (primavera 3.0.5), @RequestMapping(value={"", "/"})
- só "/"
funciona, ""
não. No entanto, eu descobri que isso funciona: @RequestMapping(value={"/", " * "})
, a " * "
Combina qualquer coisa, por isso será o manipulador padrão, caso nenhum outro.
Não precisa. A Anotação de Requestmapping suporta curingas e caminhos de estilo formigas. Também parece que você quer apenas uma visualização padrão, para que você possa colocar
<mvc:view-controller path="/" view-name="welcome"/>
no seu arquivo de configuração. Isso encaminhará todas as solicitações à raiz para a visualização de boas -vindas.
No momento, com o uso do spring -boot - {} não funcionará.
@RequestMapping
ainda tem string [] como um parâmetro de valor, então a declaração se parece com a seguinte:
@RequestMapping(value=["/","/index","/login","/home"], method = RequestMethod.GET)
A maneira mais curta é: @RequestMapping({"", "/", "welcome"})
Embora você também possa fazer:
@RequestMapping(value={"", "/", "welcome"})
@RequestMapping(path={"", "/", "welcome"})
É melhor usar a anotação PathVariable se você ainda deseja obter o URI que foi chamado.
@PostMapping("/pub/{action:a|b|c}")
public JSONObject handlexxx(@PathVariable String action, @RequestBody String reqStr){
...
}
ou analisá -lo do objeto de solicitação.