バッキングオブジェクトなしで @RequestBody を使用して複数の変数を Spring MVC コントローラーに渡すことはできますか?

Linda Hamilton
リリース: 2024-11-11 12:40:03
オリジナル
999 人が閲覧しました

Can I Pass Multiple Variables to a Spring MVC Controller with @RequestBody without a Backing Object?

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

質問:

@RequestBody の複数の変数を Ajax を使用して Spring MVC コントローラーに渡すには、バッキング オブジェクトでパラメーターをラップする必要がありますか?

ディスカッション:

この質問は、次の必要性から生じています。 @RequestBody で 2 つの文字列「str1」と「str2」を JSON として渡します。ただし、最初のアプローチ:

@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 で使用できます:

{
    "holder": {
        "str1": "test one",
        "str2": "two test"
    }
}
ログイン後にコピー

答え:

バッキング オブジェクトを使用することは実行可能なアプローチです代わりの解決策は、Map または ObjectNode を使用して、別のオブジェクト クラスを作成せずに JSON に直接バインドすることです。

Map の場合:

@RequestMapping(value = "/Test", method = RequestMethod.POST)
@ResponseBody
public boolean getTest(@RequestBody Map<String, String> json) {
   //json.get("str1") == "test one"
}
ログイン後にコピー

ObjectNode の場合:

public boolean getTest(@RequestBody ObjectNode json) {
   //json.get("str1").asText() == "test one"
}
ログイン後にコピー

以上がバッキングオブジェクトなしで @RequestBody を使用して複数の変数を Spring MVC コントローラーに渡すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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