7

spring-mvc 3.1.0.RELEASEを使用していますが、何らかの理由で POST をクエリ パラメータとリクエスト ボディにマッピングすることができません。

コントローラーメソッドの外観は次のとおりです。

  @RequestMapping(method = POST, value = "/post-to-me/") 
  public void handlePost(
    @RequestBody Content content,
    @RequestParam("param1") String param1,
    @RequestParam("param2") String param2
  ){
       //do stuff       
  }

ただし、すべてのリクエスト パラメータをパス パラメータに変換すると、マッピングが機能します。誰かが似たようなことに遭遇しましたか?

ありがとう!

編集:「動作しません」== 404 やってみると、POST /post-to-me?param1=x&param2=y

4

2 に答える 2

1

リクエスト マッピング値の末尾のスラッシュが問題である可能性があります。試す:

@RequestMapping(method = RequestMethod.POST, value = "/post-to-me")

または POST リクエストをPOST /post-to-me/?param1=x&param2=y

于 2017-09-25T13:20:05.820 に答える
1

まず、POST URL がコントローラ メソッドの URL と一致しません。POST URL は「/post-to-me/?param1=x¶m2=y」である必要があり、「/post-to-me?param1=x¶m2=y」ではありません。

第二に、 Content クラスはどこから来たのですか?? 私は文字列を使用しましたが、私にとってはうまくいきます

@RequestMapping(method = RequestMethod.POST, value = "/post-to-me/")
public void handlePost(@RequestBody String content,
        @RequestParam("param1") String param1,
        @RequestParam("param2") String param2, HttpServletResponse response) {
    System.out.println(content);
    System.out.println(param1);
    System.out.println(param2);
    response.setStatus(HttpServletResponse.SC_OK);
}

HttpServletResponse を使用して HTTP 200 コードを返すことに注意してください。ただし、HTTP コードを返すためのより良い解決策があると思います。これを確認してください: Spring MVC での複数の応答 http ステータス

于 2012-04-20T01:30:09.043 に答える