@requestparam设默认值需用defaultvalue字符串属性,并建议显式配required=false;支持多值数组/集合,默认值自动转换类型。

Spring Boot 中用 @RequestParam 接收查询参数并设默认值,核心是设置 defaultValue 属性,同时注意 required 的配合使用。
基础用法:指定默认值并允许参数缺失
当 URL 中没有提供该查询参数时,Spring 会自动注入你设定的默认值,无需额外判空或处理:
@GetMapping("/api/user")
public String getUser(@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "size", defaultValue = "10") int size) {
return "page=" + page + ", size=" + size;
}
访问 /api/user(不带参数)等价于 /api/user?page=1&size=10。
字符串类型默认值要加引号
defaultValue 是字符串类型,即使目标参数是数字或布尔,也必须写成字符串字面量,由 Spring 自动转换:
-
defaultValue = "1"✅ 正确(int 类型可转) -
defaultValue = "true"✅ 正确(boolean 类型可转) -
defaultValue = "abc"✅ 正确(String 类型原样赋值) -
defaultValue = 1❌ 编译错误(属性只接受 String)
显式控制是否必需:required = false 更安全
虽然 defaultValue 隐含了“非必需”,但显式写 required = false 更清晰,尤其在 IDE 提示和文档生成中更友好:
@RequestParam(value = "sort", required = false, defaultValue = "id") String sort
这样既表明该参数可选,又定义了缺省行为。如果只写 required = false 而不写 defaultValue,参数值会是 null(对引用类型)或类型默认值(如 int 为 0),容易引发空指针或逻辑偏差。
接收多个同名参数:用数组或集合
支持通过同一个参数名传多个值(如 ?tag=java&tag=spring&tag=boot),配合 defaultValue 可设默认列表:
@RequestParam(value = "tag", required = false, defaultValue = "all") String[] tags
此时若无 tag 参数,tags 值为 ["all"];若有多个,则为对应字符串数组。集合类型(如 List<string></string>)同理,但需确保有合适的转换器(Spring Boot 默认已支持)。











