@RequestParam
是 Spring MVC 中用来获取请求参数的注解之一。它用于将请求中的参数值绑定到方法的参数上。
@RequestParam
注解有以下几个常用的属性:
value
:指定要绑定的请求参数的名称。例如,@RequestParam(value = "id")
指定绑定名为 “id” 的请求参数。required
:指定该参数是否为必需的,默认为true
。如果设置为true
,但请求中没有包含该参数,则会抛出异常。如果设置为false
,则可以不包含该参数。defaultValue
:指定请求参数的默认值。如果请求中没有提供该参数,则使用默认值。name
:value
的别名,用于指定参数名称。paramName
:和name
作用相同,用于指定参数名称。
示例代码:
@GetMapping("/example") //指定请求参数 id 赋给声明的 int类型的 id 变量
public String exampleMethod(@RequestParam("id") int id,
@RequestParam(value = "name", required = false, defaultValue = "Guest") String name) {
// 在这里可以使用获取到的参数值进行业务逻辑处理
// ...
return "example";
}
在上面的例子中,exampleMethod
方法通过 @RequestParam
注解获取了两个请求参数:id 和 name。其中,id 参数是必需的,而 name 参数不是必需的,并且有一个默认值 “Guest”。
这样,在访问 /example?id=123&name=John
的请求中,id 参数将被绑定为整数值 123,name 参数将被绑定为字符串 “John”。如果请求中没有提供 name 参数,则使用默认值 “Guest”。
注意:
可以通过required=false
或者true
来要求@RequestParam
配置的前端参数是否一定要传,此时需要注意如果required=false
前端没传来参数,则自己声明的参数值为 null, 如果参数类型为 int
则会报错,所以一般也是定义为 Integer
类型,Integer
类型变量默认值为null
,也可以区分出赋值和未赋值。
报错
ested exception is java.lang.IllegalStateException: No primary or single unique constructor found for interface java.util.List] with root cause
使用集合 List 接收请求参数时,让springMVC底层处理如何封装数据,SpringMVC
默认将List作为对象处理,赋值前先创建对象,由于List是接口,无法创建对象。因此加上 @RequestParam
让数据强制匹配