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