Spring Boot中itemId传参转null引发MissingServletRequestParameterException异常排查
解决Spring Boot中updateBasket方法itemId转null引发400错误的原因
参数名称不匹配
前端表单传递的参数名必须和控制器方法中@RequestParam指定的名称完全一致。比如前端用name="itemid"(全小写),后端控制器写@RequestParam("itemId") Long itemId(驼峰格式),就会导致Spring无法正确绑定参数,最终转为null。检查basket.html里的表单元素name属性,确保和控制器的参数名完全一致。参数类型不合法
前端传递的itemId值如果不是有效的Long类型(比如空字符串、包含非数字字符),Spring无法完成类型转换,就会抛出该异常并将参数设为null。检查页面中itemId对应的输入框,是否在提交时被意外清空,或者传递了非数字内容。模板表达式错误
如果用Thymeleaf渲染表单,比如使用th:field或th:param传递itemId,要确保表达式正确。比如th:value="${orderItem.itemId}"是否正确获取到实体类的itemId值,避免因表达式错误导致传递空值。实体类字段问题
检查OrderItem实体类的itemId字段是否有正确的getter/setter方法,字段类型是否和控制器的Long类型兼容。如果实体类中itemId是Integer类型,而控制器用Long,虽然多数情况能转换,但如果前端传递的值超出Integer范围,也可能导致转换失败为null。
内容的提问来源于stack exchange,提问作者Hamza Siddiqui
相关产品推荐
相关产品推荐

