如何知道调用了@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
}