根据代码分析,list 接口的参数是一个 VmMineralType 对象,而请求中传递的参数是 mTypeId=1,这种情况下 Spring MVC 默认会将请求参数绑定到对应方法的参数中,即将 mTypeId=1 赋值给 vmMineralType 对象的属性中。但由于 vmMineralType 对象中只有一个 mTypeId 属性,没有其他条件属性,所以查询条件没有生效,导致返回了全部数据。

要解决这个问题,可以在前端将 mTypeId 作为 vmMineralType 对象的属性传递进 list 接口,例如使用 post 请求,将参数以 json 格式放在请求体中传递,请求头中设置 Content-Type 为 application/json。后端可以使用 @RequestBody 注解将请求体中的 json 数据转换成 VmMineralType 对象。

前端示例代码:

var vmMineralType = {
  'mTypeId': 1
};
$.ajax({
  url: '/warehousing/mineraltype/list',
  type: 'post',
  contentType: 'application/json',
  data: JSON.stringify(vmMineralType),
  success: function(data) {
    console.log(data);
  }
});

后端修改代码:

@PostMapping("/list")
@ResponseBody
public TableDataInfo list(@RequestBody VmMineralType vmMineralType)
{
    startPage();
    List<VmMineralType> list = vmMineralTypeService.selectVmMineralTypeList(vmMineralType);
    return getDataTable(list);
}

使用 @RequestBody 注解后,Spring MVC 将会解析请求体中的 JSON 数据,并将数据映射到 VmMineralType 对象中,从而实现根据 mTypeId 查询数据的目的。

Spring MVC @RequestMapping 接口参数传递及数据查询问题解析

原文地址: https://www.cveoy.top/t/topic/nADz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录