2017-08-02 8 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); 
} 

のようなものです。しかし、私は

$.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です。リクエストパラメタとしてURLを送信する場合は、あなたのURLは**/auth/company/delete?companyId = 2 ** – barbakini

+0

@barbakiniでも#RequestParamを#RequestBodyに変更してもそれはまだ機能していないので、companyIdを#RequestBodyの文字列への整数で、値が "companyId"の場合:2! –

+0

**/auth/company/delete?companyId = 2 **としてみましたか? requestBodyを変更した場合、メソッドはStringオブジェクトまたはIntegerオブジェクトではなくMapオブジェクトを取得する必要があります。 ** DELCompany(@RequestBody Map body)のように** 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")); 
} 

または:

{2} 

@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 
} 

あなたがリクエストボディを使用したいと整数として、コントローラのメソッドの変数に直接整数値をキャッチしたい場合は、あなたのリクエストボディは次のようにする必要がありますコントローラメソッドは次のようになります:

@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"}) 
@ResponseBody 
public ResponseMessage deleteCompany(@RequestBody Integer companyId) { 
    return companyManageService.deleteCompany(companyId); 
} 
関連する問題