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

Spring中如何接收Long类型请求参数?参数缺失报错求助

问题解决:Spring MVC参数绑定报错MissingServletRequestParameterException

错误原因

你的URL传递的参数名是id(/board/detail?id=[board_num]),但Controller方法中@RequestParam指定的参数名是sequence,Spring MVC找不到名为sequence的请求参数,因此抛出该异常。Long类型本身完全支持通过@RequestParam绑定,你听到的说法是错误的。

解决方案

两种可行修改方式,二选一即可:

方式一:修改Controller的参数绑定名称

将@RequestParam的参数名改为id,与URL中的参数名匹配:

@GetMapping("/board/detail")
public String detail(@RequestParam("id") Long sequence, Model model){
    model.addAttribute("detail", boardService.detail(sequence));
    return "detail";
}

Spring会自动将URL中id对应的字符串参数转换为Long类型,只要参数值是合法数字即可。

方式二:修改URL的参数名

将URL中的参数名改为sequence,与Controller中的绑定名称一致:

/board/detail?sequence=[board_num]

额外优化建议

  1. 若允许参数缺失,可设置required=false避免直接返回400错误:
@RequestParam(value="id", required=false) Long sequence
  1. Service层中findById(sequence).get()可能抛出NoSuchElementException,建议替换为更友好的异常处理:
public Board detail(Long sequence){
    return boardRepository.findById(sequence)
        .orElseThrow(() -> new IllegalArgumentException("未找到编号为" + sequence + "的帖子"));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 08:52:15