- RequestParam 映射请求参数
- required 表示是否必须,默认为true
- defaultValue 请求参数的默认值
http://localhost:9001/demo/id/get
required = false
@GetMapping("/{id}/get")
public List<Article> getList(@PathVariable("id") String id, @RequestParam(value = "param",required = false) int param) {//int应改为Integer
System.out.println(param);//运行时报错
System.out.println(id);
return mongoTemplate.findAll(Article.class);
}
当无参数param时,请求出错
{
"timestamp": "2019-07-17T06:41:00.734+0000",
"status": 500,
"error": "Internal Server Error",
"message": "Optional int parameter 'param' is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type.",
"path": "/demo/id/get"
}
原因是required = false时,若url中param参数不存在,则param变量赋值为null,但如果param的类型不是引用类型,则会报错。
required = true
当defaultValue = "aaa"时,若url中param参数不存在,则默认为aaa
@GetMapping("/{id}/get")
public List<Article> getList(@PathVariable("id") String id, @RequestParam(value = "param",defaultValue = "aaa",required = true) String param) {
System.out.println(param);
System.out.println(id);
return mongoTemplate.findAll(Article.class);
}
若无defaultValue = "aaa"则报错
{
"timestamp": "2019-07-17T06:56:11.836+0000",
"status": 400,
"error": "Bad Request",
"message": "Required String parameter 'param' is not present",
"path": "/demo/id/get"
}