【问题标题】:@PathVariable doesn't work for only one of the mappings@PathVariable 仅适用于其中一种映射
【发布时间】:2017-05-13 07:47:49
【问题描述】:

大家好,我通常使用@PathVariable,但是对于这种情况,我不知道为什么它不起作用。

menu.jsp

<a href="<c:url value= '/admin/myCart/1/${idproducts}' />">Panier</a>      

控制器:

@RequestMapping(value = "/admin/viewProduct/{ref}", method = RequestMethod.GET)
public String getProduit(@PathVariable("ref") int ref, Model model) {
**model.addAttribute("idproducts",this.orderedProductService.getIdOrderedProductsByclient(1));**
model.addAttribute("produit", this.produitService.getProduitById(ref));


    return "menu";
}

@RequestMapping(value= "/admin/monPanier/{idproducts}", method = RequestMethod.GET)
public String myCart( @PathVariable("idproducts") String idproducts,Model model) {
     return mycart;
}

所以 menu.jsp 得到{idproducts}(这是一个包含由“/”分隔的ids的String,例如:idproducts = 5/6/7),但我不知道为什么@PathVariable("idproducts") 不起作用。错误是:

找不到带有 URI [/SpringMVCHibernate/admin/myCart/5/6/7/] 的 HTTP 请求的映射

【问题讨论】:

  • 是否有一种产品已授予字符串“5/6/7”的 ID?或者您是否尝试获取包含 ID 为 5、6 和 7 的三种产品的购物车?

标签: spring-mvc controller mapping path-variables


【解决方案1】:

您将 URL 定义为,

/admin/mycart/1/**${idproducts}**

但是在controller 中没有用/admin/mycart/1 定义这样的映射

定义为/admin/mycart

@RequestMapping(value= "/admin/mycart/{idproducts}", method = RequestMethod.GET)
public String monPanier( @PathVariable("idproducts") String idproducts,Model model) {
     return mycart;
}

所以尝试如下修复你的controller

@RequestMapping(value= "/admin/mycart/1/{idproducts}", method = RequestMethod.GET)
    public String monPanier( @PathVariable("idproducts") String idproducts,Model model) {
         return mycart;
}

【讨论】:

  • Ouups.. 抱歉,这只是翻译问题,因为我的代码是法语的。现在我用英语编辑了所有内容。现在你能检查一下你是否能看到这个错误的来源吗?
  • @SalimLyoussi 检查我更新的答案。您需要在控制器方法的请求映射中定义 /1 。如果 /1 是动态的,那么您需要定义多个路径变量。
猜你喜欢
  • 2014-09-24
  • 2013-05-19
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 2015-11-25
  • 2013-11-07
相关资源
最近更新 更多