Heim  >  Artikel  >  Java  >  Kann ich mit @RequestBody mehrere Variablen ohne ein Backing-Objekt an einen Spring MVC-Controller übergeben?

Kann ich mit @RequestBody mehrere Variablen ohne ein Backing-Objekt an einen Spring MVC-Controller übergeben?

Linda Hamilton
Linda HamiltonOriginal
2024-11-11 12:40:031028Durchsuche

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

Ü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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn