Übergabe mehrerer Parameter in @RequestBody an einen Spring MVC-Controller mit Ajax
Beim Versuch, mehrere Parameter mit @ an einen Spring MVC-Controller zu übergeben Bei RequestBody stehen viele Entwickler vor der Frage, ob es notwendig ist, die Parameter in ein Backing zu packen Objekt.
Erster Ansatz:
Zunächst können Sie versuchen, Folgendes zu tun:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody String str1, @RequestBody String str2) {}
Mit einer JSON-Nutzlast wie dieser:
{ "str1": "test one", "str2": "two test" }
Es kann jedoch sein, dass dieser Ansatz nicht so gut funktioniert erwartet.
Wrapper-Objekt-Ansatz:
Um dieses Problem zu lösen, besteht der nächste Ansatz darin, die Parameter in ein Hintergrundobjekt zu verpacken:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Holder holder) {}
Dies erfordert eine JSON-Nutzlast wie diese:
{ "holder": { "str1": "test one", "str2": "two test" } }
Alternative Optionen:
Alternativ können Sie die RequestMethod in GET ändern und @RequestParam in der Abfragezeichenfolge verwenden. Eine andere Möglichkeit besteht darin, @PathVariable mit einer der RequestMethods zu verwenden.
Verwenden einer Map oder eines ObjectNode:
Wenn das Einschließen eines Hintergrundobjekts unerwünscht ist, können Sie eine Map oder verwenden Jacksons ObjectNode zum Einbinden mehrerer Parameter @RequestBody:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Map<String, String> json) { //json.get("str1") == "test one" }
Oder:
public boolean getTest(@RequestBody ObjectNode json) { //json.get("str1").asText() == "test one" }
Das obige ist der detaillierte Inhalt vonWie übergebe ich mithilfe von @RequestBody mit Ajax mehrere Parameter an einen Spring MVC-Controller?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!