Übergabe mehrerer Variablen in @RequestBody an Spring MVC Controller mit Ajax
Frage:
Ist das Umschließen von Parametern in ein Hintergrundobjekt erforderlich, um mehrere Variablen in @RequestBody an einen Spring MVC-Controller zu übergeben? Ajax?
Diskussion:
Die Frage ergibt sich aus der Notwendigkeit, zwei Zeichenfolgen, „str1“ und „str2“, als JSON im @RequestBody zu übergeben. Der anfängliche Ansatz:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody String str1, @RequestBody String str2) {}
erfordert jedoch eine JSON-Struktur, bei der jede Variable explizit deklariert wird:
{ "str1": "test one", "str2": "two test" }
Es ist jedoch bequemer, ein Hintergrundobjekt zu verwenden, wie in:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Holder holder) {}
die mit Folgendem verwendet werden kann JSON:
{ "holder": { "str1": "test one", "str2": "two test" } }
Antwort:
Während die Verwendung eines Hintergrundobjekts ein praktikabler Ansatz ist, besteht eine alternative Lösung darin, eine Map oder einen ObjectNode zu verwenden, um direkt an das zu binden JSON, ohne eine separate Objektklasse zu erstellen.
Für eine Karte:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Map<String, String> json) { //json.get("str1") == "test one" }
Für eine ObjectNode:
public boolean getTest(@RequestBody ObjectNode json) { //json.get("str1").asText() == "test one" }
Das obige ist der detaillierte Inhalt vonKann ich mit @RequestBody mehrere Variablen ohne ein Backing-Objekt an einen Spring MVC-Controller übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!