具有pathvariable的多个值的RequestMapping - Spring 3.0

Ara*_*Vel 10 java spring spring-mvc spring-3

@RequestMapping(value = {"/userDetails", "/userDetails/edit/{id}"}, method = RequestMethod.GET)
public String userDetails(Map Model,****) {
//what goes here? 
}
Run Code Online (Sandbox Code Playgroud)

我对该userDetails方法的论点是什么?我如何区分/userDetails/userDetails/edit/9方法内?

kun*_*ora 16

理想情况下,我们可以通过@PathVariable在方法参数中使用注释来获取路径变量,但是在这里你使用了url数组,{"/userDetails", "/userDetails/edit/{id}"}这样在提供请求时会出错localhost:8080/domain_name/userDetails,在这种情况下,没有id会提供给@PathVariable.

因此,您可以通过在方法中使用参数HttpServletRequest请求来获取差异(哪个请求正在通过)并使用此请求对象,如下所示 -

String uri = request.getRequestURI();

代码是这样的 -

   @RequestMapping(value = {"/userDetails", "/userDetails/edit/{id}"}, method=RequestMethod.GET)
   public String userDetails(Map Model,HttpServletRequest request) {
   String uri = request.getRequestURI();  
  //put the condition based on uri
 }
Run Code Online (Sandbox Code Playgroud)

  • 为什么不将这两个请求映射分成两个方法?如果您有任何常用功能要实现,您可以将该公共代码放在单独的私有方法中并相应地调用此方法. (6认同)