两者的作用都是将request里的参数的值绑定到contorl里的方法参数里的,区别在于,url不同
一、@RequestParam的url是这样的: http://host:port/.../test?>param1=123¶m2=345
@RequestMapping(value="/test",method=RequestMethod.GET)
public String count(@RequestParam("param1") int one, @RequestParam("param2") int two) {
calculator.count(one, two);
return "viewer";
}
二、@PathVariable的url是这样的: http://host:port/.../test/image
@RequestMapping(value="/test/{image}",method=RequestMethod.GET)
public String store(@PathVariable("image") String image, Model model) {
model.addAttribute(report.find(image));
return "imager";
}
因为方法的参数名和占位符的名称相同,所以可以去掉@PathVariable中的value属性:
@RequestMapping(value="/test/{image}",method=RequestMethod.GET)
public String test(@PathVariable String image, Model model) {
model.addAttribute(report.find(image));
return "imager";
}
但是,如果想要重命名参数名时,必须同时修改占位符的名称,使相互匹配。