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

Patricia Arquette
リリース: 2024-11-11 12:47:02
オリジナル
958 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート