在Spring MVC中定义了控制器中的多路径方法
@RequestMapping(value={"/path", "/path2"}, method = RequestMethod.GET)
public String MyMethod () {
// Determine which route invoked the method
return null;
}
有没有办法确定哪个路由调用了该方法?
感谢您的帮助。
答案 0 :(得分:2)
我相信你可以使用HttpServletRequest:
@RequestMapping(value={"/path.html", "/path2.html"}, method = RequestMethod.GET)
public String MyMethod (HttpServletRequest request) {
// Determine which route invoked the method
String url = new String(request.getRequestURL());
log.debug("URL: " + url); //use whatever you use to log
return null;
}
答案 1 :(得分:2)
您可以使用HttpServletRequest
具有名为getRequestURL()
的方法来检索实际的网址,以便您解析使用的路径。
然而,另一种可能性是使用路径变量:
@RequestMapping(value = "/{path}", method = RequestMethod.GET)
public String myMethod(@PathVariable String path) {
// Do stuff with "path"
return null;
}
在这种情况下,path
变量将包含您输入的与@RequestMapping
中给出的路径相匹配的内容,在您的情况下,它将是"path"
或"path2"
。但是,这也会允许其他路径变量(例如"path3"
,...),因此您可能希望在使用之前先验证它。