【发布时间】:2011-01-31 13:34:26
【问题描述】:
是否可以在一个方法上使用多个 @RequestMapping 注释?
喜欢:
@RequestMapping("/")
@RequestMapping("")
@RequestMapping("/welcome")
public String welcomeHandler(){
return "welcome";
}
【问题讨论】:
标签: java spring spring-mvc
是否可以在一个方法上使用多个 @RequestMapping 注释?
喜欢:
@RequestMapping("/")
@RequestMapping("")
@RequestMapping("/welcome")
public String welcomeHandler(){
return "welcome";
}
【问题讨论】:
标签: java spring spring-mvc
@RequestMapping 有一个String[] 值参数,因此您应该能够像这样指定多个值:
@RequestMapping(value={"", "/", "welcome"})
【讨论】:
根据我的测试(春季 3.0.5),@RequestMapping(value={"", "/"}) - 只有 "/" 有效,"" 无效。但是我发现这是可行的:@RequestMapping(value={"/", " * "})," * " 匹配任何内容,因此它将是默认处理程序,以防没有其他处理程序。
【讨论】:
不需要。 RequestMapping 注解支持通配符和 ant 样式的路径。看起来你只想要一个默认视图,所以你可以把
<mvc:view-controller path="/" view-name="welcome"/>
在您的配置文件中。这会将所有对根的请求转发到欢迎视图。
【讨论】:
最短的方法是:@RequestMapping({"", "/", "welcome"})
虽然你也可以这样做:
@RequestMapping(value={"", "/", "welcome"})@RequestMapping(path={"", "/", "welcome"})【讨论】:
以下也是可以接受的:
@GetMapping(path = { "/{pathVariable1}/{pathVariable1}/somePath",
"/fixedPath/{some-name}/{some-id}/fixed" },
produces = "application/json")
同样适用于@RequestMapping
【讨论】:
如果你仍然想获取被调用的uri,最好使用PathVariable注解。
@PostMapping("/pub/{action:a|b|c}")
public JSONObject handlexxx(@PathVariable String action, @RequestBody String reqStr){
...
}
或从请求对象中解析它。
【讨论】:
现在使用 Spring-Boot 2.0.4 - { } 不起作用。
@RequestMapping
仍然有 String[] 作为值参数,所以声明如下:
@RequestMapping(value=["/","/index","/login","/home"], method = RequestMethod.GET)
** 更新 - 适用于 Spring-Boot 2.2**
@RequestMapping(value={"/","/index","/login","/home"}, method = RequestMethod.GET)
【讨论】: