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

Spring MVC接收URL参数时出现Error 400问题求助

从你的描述来看,核心问题出在请求路径不匹配,其次可能存在参数配置的细节问题,我们一步步来解决:

首先看你的请求URL:http://localhost:80000/xxx/xxx/tickets/search?codprovincia=28&municipio=110000,路径部分是/xxx/xxx/tickets/search,但你第一个控制器的配置是:

  • 类级@RequestMapping("/xxx")
  • 方法级@RequestMapping("tickets")
    这意味着这个方法对应的路径是/xxx/tickets,和你请求的路径完全不匹配,Spring找不到对应的处理方法,自然返回400错误。

接下来是具体的修复方案:

1. 修正控制器的路径映射

调整类和方法的@RequestMapping,让它完全匹配你的请求路径:

@Controller 
@RequestMapping(value = "/xxx/xxx" ) // 对应URL中的前两个/xxx
public class BuscadorIncidenciasController extends BaseControllerWeb { 
    // 方法级映射对应/tickets/search,指定GET方法更严谨
    @RequestMapping(value = "tickets/search", method = RequestMethod.GET) 
    public String tickets(Model model, 
                          // 如果参数是必传的可以去掉required=false,否则加上避免无参数时报错
                          @RequestParam(value = "codprovincia") String codprovincia, 
                          @RequestParam(value = "municipio") String municipio, 
                          HttpServletRequest request) throws NoAjaxException { 
        // 你的业务逻辑
        return CONST.JSP_VIEW; 
    } 
    ...
}

2. 排查参数相关的潜在问题

如果调整路径后还是报400,需要检查以下几点:

  • 参数名拼写一致:确保@RequestParam里的参数名和URL中的完全一致(大小写敏感),比如不要把codprovincia写成codProvincia。
  • 参数类型匹配:你第二个例子用Integer接收参数,如果第一个例子里的参数是数字,用String接收没问题,但如果后续要转数字,要处理格式错误;如果直接用Integer接收,要确保URL里的参数是有效的数字,否则会触发类型转换错误导致400。
  • 非必传参数配置:如果这两个参数不是每次请求都必须传,一定要加上required=false,或者给默认值,比如@RequestParam(value = "codprovincia", required = false, defaultValue = "0") String codprovincia,否则当URL里没有这些参数时,Spring会因为找不到必填参数返回400。

3. 验证请求格式

确保你的URL里的参数分隔符是&,而不是&(&是HTML转义后的字符,直接在浏览器地址栏里用的话应该用&;如果是在HTML页面的链接里,转义是对的,但浏览器会自动解析成&发送请求,不过最好确认实际发送的请求参数是否正确)。

按照这个步骤调整后,应该就能正常接收参数了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:53:11