Heim > Java > javaLernprogramm > 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
Freigeben: 2024-11-11 12:40:03
Original
1041 Leute haben es durchsucht

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) {}
Nach dem Login kopieren

erfordert jedoch eine JSON-Struktur, bei der jede Variable explizit deklariert wird:

{
    "str1": "test one",
    "str2": "two test"
}
Nach dem Login kopieren

Es ist jedoch bequemer, ein Hintergrundobjekt zu verwenden, wie in:

@RequestMapping(value = "/Test", method = RequestMethod.POST)
@ResponseBody
public boolean getTest(@RequestBody Holder holder) {}
Nach dem Login kopieren

die mit Folgendem verwendet werden kann JSON:

{
    "holder": {
        "str1": "test one",
        "str2": "two test"
    }
}
Nach dem Login kopieren

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"
}
Nach dem Login kopieren

Für eine ObjectNode:

public boolean getTest(@RequestBody ObjectNode json) {
   //json.get("str1").asText() == "test one"
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage