Несколько аннотаций Spring @RequestMapping - PullRequest
220 голосов
/ 25 марта 2010

Можно ли использовать в методе несколько аннотаций @RequestMapping spring? Как:

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

Ответы [ 5 ]

393 голосов
/ 12 мая 2010

@RequestMapping имеет параметр значения String[], поэтому вы можете указать несколько значений, например:

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

22 голосов
/ 02 ноября 2010

Из моего теста (весна 3.0.5) @RequestMapping(value={"", "/"}) - только "/" работает, "" - нет. Однако я обнаружил, что это работает: @RequestMapping(value={"/", " * "}), " * " соответствует чему угодно, поэтому он будет обработчиком по умолчанию, если нет других.

12 голосов
/ 25 марта 2010

Не нужно. Аннотация RequestMapping поддерживает подстановочные знаки и пути в стиле муравьев. Также выглядит так, будто вы просто хотите использовать вид по умолчанию, поэтому вы можете поставить

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

в вашем конфигурационном файле. Это перенаправит все запросы в Root на экран приветствия.

0 голосов
/ 17 апреля 2019

Лучше использовать аннотацию PathVariable, если вы все еще хотите получить вызываемый URI.

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

или проанализируйте его из объекта запроса.

0 голосов
/ 28 декабря 2018

Прямо сейчас с использованием Spring-Boot - {} не будет работать.

@RequestMapping

все еще имеет String [] в качестве параметра значения, поэтому объявление выглядит так:

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