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