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