Heim >Java >javaLernprogramm >Wie übergebe ich mithilfe von @RequestBody mit Ajax mehrere Parameter an einen Spring MVC-Controller?

Wie übergebe ich mithilfe von @RequestBody mit Ajax mehrere Parameter an einen Spring MVC-Controller?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-11 12:47:021066Durchsuche

How to Pass Multiple Parameters to a Spring MVC Controller using @RequestBody with Ajax?

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

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