如何知道调用了@RequestMapping 的哪个参数
How to know which param of @RequestMapping is called
这是我的@RequestMapping
注释:
@RequestMapping({"/loginBadCredentials", "/loginUserDisabled", "/loginUserNumberExceeded"})
public String errorLogin(...){
...
}
在方法 errorLogin 中,有没有办法知道三个 url 中的哪一个是 "called"?
添加HttpServletRequest
作为您的参数,并使用它来查找当前请求路径。
更新:Spring还提供RequestContextHolder
:
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
String currentReqUri = attributes.getRequest().getRequestURI();
在我看来,第一种方法更好,也更容易测试。
您可以将 HttpServletRequest 注入到 method-parameters 中,然后获取调用的 uri。
@RequestMapping({"/loginBadCredentials", "/loginUserDisabled", "/loginUserNumberExceeded"})
public String errorLogin(HttpServletRequest request) {
String uri = request.getRequestURI();
// do sth with the uri here
}
最简单的方法是注入 HttpServletRequest 并获取 uri:
@RequestMapping({"/loginBadCredentials", "/loginUserDisabled", "/loginUserNumberExceeded"})
public String errorLogin(HttpServletRequest request) {
String uri = request.getRequestURI();
// switch on uri what you need to do
}
这是我的@RequestMapping
注释:
@RequestMapping({"/loginBadCredentials", "/loginUserDisabled", "/loginUserNumberExceeded"})
public String errorLogin(...){
...
}
在方法 errorLogin 中,有没有办法知道三个 url 中的哪一个是 "called"?
添加HttpServletRequest
作为您的参数,并使用它来查找当前请求路径。
更新:Spring还提供RequestContextHolder
:
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
String currentReqUri = attributes.getRequest().getRequestURI();
在我看来,第一种方法更好,也更容易测试。
您可以将 HttpServletRequest 注入到 method-parameters 中,然后获取调用的 uri。
@RequestMapping({"/loginBadCredentials", "/loginUserDisabled", "/loginUserNumberExceeded"})
public String errorLogin(HttpServletRequest request) {
String uri = request.getRequestURI();
// do sth with the uri here
}
最简单的方法是注入 HttpServletRequest 并获取 uri:
@RequestMapping({"/loginBadCredentials", "/loginUserDisabled", "/loginUserNumberExceeded"})
public String errorLogin(HttpServletRequest request) {
String uri = request.getRequestURI();
// switch on uri what you need to do
}