【问题标题】:RequestMapping with multiple values with pathvariable - Spring 3.0带有路径变量的多个值的请求映射 - Spring 3.0
【发布时间】:2012-04-21 18:30:56
【问题描述】:
@RequestMapping(value = {"/userDetails", "/userDetails/edit/{id}"}, method = RequestMethod.GET)
public String userDetails(Map Model,****) {
//what goes here? 
}

我对@9​​87654323@ 方法的论点是什么?以及如何在方法中区分/userDetails/userDetails/edit/9

【问题讨论】:

标签: java spring spring-mvc spring-3


【解决方案1】:

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

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

字符串 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
 }

【讨论】:

  • 我分别使用 method=RequestMethod.GET 和 method=RequestMethod.POST 。在这种情况下,我不会将 HttpServletRequest 作为参数传递。有没有其他办法?
  • 为什么不把这两个requestmapping分成两个方法呢?如果您有任何通用功能要实现,您可以将该通用代码放在单独的私有方法中并相应地调用此方法。
猜你喜欢
  • 2017-04-18
  • 2015-01-25
  • 1970-01-01
  • 2019-05-12
  • 2011-06-09
  • 2023-04-04
  • 2011-02-14
  • 2015-01-18
  • 1970-01-01
相关资源
最近更新 更多