2017-08-02 28 views
0

enter image description here春天不能接收后通过PARAM邮递​​员送

而且我的控制器就像是

@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, 
     produces = {"application/json", "application/xml"}) 
@ResponseBody 
public ResponseMessage deleteCompany(@RequestParam("companyId") Integer companyId) { 
    return companyManageService.deleteCompany(companyId); 
} 

但是,当我在Chrome控制台中输入代码使用

$.post("http://ltc_dev.leapstack.cn/gw/security/auth/company/delete", { companyId: 1 }) 
    .done(function(data) { 
    alert(data.success); 
    alert(data.message); 
    }); 

我得到了正确的响应,所以..... 我不知道是邮差的错误还是我的控制器错误

+1

它不是通过邮递员发送的requestParam。这是requestBody。如果你想发送请求参数你的网址应该是**/auth/company/delete?companyId = 2 ** – barbakini

+0

@ barbakini即使我改变了#RequestParam到#RequestBody它仍然没有工作,我试图改变companyId从整数与#RequestBody字符串并得到值为“companyId”:2,而不是2! –

+0

您尝试**/auth/company/delete?companyId = 2 **? 如果改变requestBody,你的方法应该得到一个Map对象而不是String或Integer。像** deleteCompany(@RequestBody地图主体)** body.get(“candidateId) – barbakini

回答

1

在您的问题中,您的控制器方法尝试将companyId作为请求参数。在邮递员你正在发送请求正文中的companyId。就像我在评论中说的,你可以直接发送URL部分的请求参数:/auth/company/delete?companyId = 2。 Spring引导可以检测companyId请求参数,并直接将其分配给方法的companyId变量。

如果您想在请求正文中发送companyId(您在评论中说过),您必须更改您的方法签名,如下所示。

@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"}) 
@ResponseBody 
public ResponseMessage deleteCompany(@RequestBody Map<String, Integer> map) { 
    return companyManageService.deleteCompany(map.get("companyId")); 
} 

或者:

@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"}) 
@ResponseBody 
public ResponseMessage deleteCompany(@RequestBody CompanyDTO company) { 
    return companyManageService.deleteCompany(company.getCompanyId); 
} 

public class CompanyDTO { 
    private Integer companyId; 

//getter setter 
} 

如果你想使用请求主体,而想直接搭上整数值控制器方法的作为整数变量您的请求主体应该是这样的:

{2} 

和控制器方法应该是这样的:

@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"}) 
@ResponseBody 
public ResponseMessage deleteCompany(@RequestBody Integer companyId) { 
    return companyManageService.deleteCompany(companyId); 
} 
相关问题