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 regexReplaceregexReplace可以直接拿到值kin43。 - 需要接收所有
ot-replace[x]格式的多值参数:把传参格式调整为ot-replace[]=值1&ot-replace[]=值2的数组传参规范,再用数组/List接收
Spring会自动按传参顺序把所有同键名的值组装到List/数组中,不需要手动写数字下标。// 对应传参格式:?ot-replace[]=kin43&ot-replace[]=otherVal @RequestParam(name = "ot-replace[]", required = false) List<String> regexReplace
补充说明:如果前端传参固定为
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
相关产品推荐
相关产品推荐

