You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中获取查询参数数组ot-replace值始终为null如何解决?

问题根因

参数绑定失败的核心原因是@RequestParam指定的参数名和URL实际携带的查询参数名不匹配。
你的请求URL里查询参数的完整键名是ot-replace[0],但代码里指定绑定的参数名是ot-replace,Spring MVC参数绑定时会做精确的键名匹配,请求中不存在名为ot-replace的查询参数,自然获取到的值为null。

可行解决方案

根据你的实际需求选对应写法即可:

  • 仅获取ot-replace[0]的单值:直接在注解里写全精确的参数名
    @RequestParam(name = "ot-replace[0]", required = false) String regexReplace
    
    这种写法下变量regexReplace可以直接拿到值kin43。
  • 需要接收所有ot-replace[x]格式的多值参数:把传参格式调整为ot-replace[]=值1&ot-replace[]=值2的数组传参规范,再用数组/List接收
    // 对应传参格式:?ot-replace[]=kin43&ot-replace[]=otherVal
    @RequestParam(name = "ot-replace[]", required = false) List<String> regexReplace
    
    Spring会自动按传参顺序把所有同键名的值组装到List/数组中,不需要手动写数字下标。

补充说明:如果前端传参固定为ot-replace[0]、ot-replace[1]这种手动写下标的格式,也可以直接用MultiValueMap接收所有查询参数后手动取值,避免逐个写参数名的冗余:

@GetMapping("/mac/view/{userId}")
public String getView(
    @PathVariable String userId,
    @RequestParam MultiValueMap<String, String> allParams
) {
    String firstReplace = allParams.getFirst("ot-replace[0]");
    // 按需取其他下标的参数即可
    return "view";
}

内容的提问来源于stack exchange,提问作者WISHY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 18:27:34