Spring MVC @RequestMapping 接口参数传递及数据查询问题解析
根据代码分析,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 查询数据的目的。
原文地址: https://www.cveoy.top/t/topic/nADz 著作权归作者所有。请勿转载和采集!