Springmvc-crud-04错误(路径变量)

错误:

原因:接收不到restful风格请求的参数(id值),需要添加路径变量注解

@RequestMapping(value="/book/{id}",method=RequestMethod.DELETE)
    public String deleteBook(@PathVariable("id")int id) {
        bookSerice.deleteBook(id);
        return "redirect:/book";
    }

关于路径变量的知识点:

第①种情况(单个路径参数):
@RequestMapping(value = "/book/{id}", method = RequestMethod.DELETE) public String deleteBook(@PathVariable(value = "id") int id) { System.out.println("删除图书 id ->" + id); return "redirect:/index.jsp"; }

/book/{id} :{id}表示路径参数占位符

 @PathVariable(value = "id") int id:表示把请求路径book/{id} id所表示的值。注入到方法参数的int id中。

当@PathVariable注解中没有标记占位符名称的时候,默认使用对应的参数名做为路径参数的名称取值。

请记住:@PathVariable标记的路径变量,不能为空,必须有值

第②种情况(多个路径参数):
@RequestMapping(value = "/book/{name}/{price}/", method = RequestMethod.POST) public String addBook(@PathVariable("name") String name, @PathVariable("price") BigDecimal price) { System.out.println(name); System.out.println(price); System.out.println("添加图书"); return "redirect:/index.jsp"; }

在一次请求中,请求路径不是只能有一个路径参数。它可以有多个。

/book/{name}/{price}/:这里就表示这个book后面可以跟两个路径参数---{name}和{price}---这两个路径参数分别注入到请求方法的 String name,和Bigdecimal price两个参数中

@PathVariable("name") String name——表示把请求路径中的name路径参数注入到请求方法的name参数中。

 @PathVariable("price") BigDecimal price——表示把请求路径中的price路径参数注入到请求方法的price参数中。

 

原文地址:https://www.cnblogs.com/zly123/p/11678414.html