问题
This is my @RequestMapping
annotation:
@RequestMapping({"/loginBadCredentials", "/loginUserDisabled", "/loginUserNumberExceeded"})
public String errorLogin(...){
...
}
Inside the method errorLogin , is there a way to know which of the three url was "called"?
回答1:
Add HttpServletRequest
as your parameters and use it to find the current request path.
Update: Spring also provides RequestContextHolder
:
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
String currentReqUri = attributes.getRequest().getRequestURI();
In my opinion, first approach is better and a little more testable.
回答2:
you can inject the HttpServletRequest into the method-parameters and then get the called uri.
@RequestMapping({"/loginBadCredentials", "/loginUserDisabled", "/loginUserNumberExceeded"})
public String errorLogin(HttpServletRequest request) {
String uri = request.getRequestURI();
// do sth with the uri here
}
回答3:
Simplest method is to inject HttpServletRequest and get the uri:
@RequestMapping({"/loginBadCredentials", "/loginUserDisabled", "/loginUserNumberExceeded"})
public String errorLogin(HttpServletRequest request) {
String uri = request.getRequestURI();
// switch on uri what you need to do
}
来源:https://stackoverflow.com/questions/34919809/how-to-know-which-param-of-requestmapping-is-called