ホームページ >Java >&#&チュートリアル >Ajaxで@RequestBodyを使用して複数のパラメータをSpring MVCコントローラに渡す方法は?

Ajaxで@RequestBodyを使用して複数のパラメータをSpring MVCコントローラに渡す方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-11 12:47:021062ブラウズ

How to Pass Multiple Parameters to a Spring MVC Controller using @RequestBody with Ajax?

Ajax を使用して @RequestBody の複数のパラメーターを Spring MVC コントローラーに渡す

@ を使用して Spring MVC コントローラーに複数のパラメーターを渡そうとする場合RequestBody の場合、多くの開発者はパラメータをバッキングでラップする必要があるかどうかという問題に遭遇します。 object.

最初のアプローチ:

最初に、次のことを試みることができます:

@RequestMapping(value = "/Test", method = RequestMethod.POST)
@ResponseBody
public boolean getTest(@RequestBody String str1, @RequestBody String str2) {}

次のような JSON ペイロードを使用します:

{
    "str1": "test one",
    "str2": "two test"
}

ただし、このアプローチは次のように機能しない場合があります。

ラッパー オブジェクトのアプローチ:

この問題を解決するための次のアプローチは、パラメータをバッキング オブジェクトでラップすることです:

@RequestMapping(value = "/Test", method = RequestMethod.POST)
@ResponseBody
public boolean getTest(@RequestBody Holder holder) {}

これには次のような JSON ペイロードが必要ですthis:

{
    "holder": {
        "str1": "test one",
        "str2": "two test"
    }
}

代替オプション:

あるいは、RequestMethod を GET に変更し、クエリ文字列で @RequestParam を使用することもできます。もう 1 つのオプションは、RequestMethod で @PathVariable を使用することです。

Map または ObjectNode の使用:

バッキング オブジェクトでラップすることが望ましくない場合は、Map または ObjectNode を使用できます。複数のパラメータをバインドする Jackson の ObjectNode @RequestBody:

@RequestMapping(value = "/Test", method = RequestMethod.POST)
@ResponseBody
public boolean getTest(@RequestBody Map<String, String> json) {
    //json.get("str1") == "test one"
}

または:

public boolean getTest(@RequestBody ObjectNode json) {
    //json.get("str1").asText() == "test one"
}

以上がAjaxで@RequestBodyを使用して複数のパラメータをSpring MVCコントローラに渡す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。