Transmission de plusieurs paramètres dans @RequestBody à un contrôleur Spring MVC à l'aide d'Ajax
Lors de la tentative de transmission de plusieurs paramètres à un contrôleur Spring MVC à l'aide de @ RequestBody, de nombreux développeurs se posent la question de savoir s'il est nécessaire d'envelopper les paramètres dans un support objet.
Approche initiale :
Au départ, vous pouvez essayer de faire ce qui suit :
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody String str1, @RequestBody String str2) {}
Avec une charge utile JSON comme celle-ci :
{ "str1": "test one", "str2": "two test" }
Cependant, vous constaterez peut-être que cette approche ne fonctionne pas aussi bien. attendu.
Approche de l'objet Wrapper :
Pour surmonter ce problème, l'approche suivante consiste à envelopper les paramètres dans un objet de support :
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Holder holder) {}
Cela nécessite une charge utile JSON comme celle-ci :
{ "holder": { "str1": "test one", "str2": "two test" } }
Alternative Options :
Vous pouvez également modifier RequestMethod en GET et utiliser @RequestParam dans la chaîne de requête. Une autre option consiste à utiliser @PathVariable avec RequestMethod.
Utilisation d'une carte ou d'un objet ObjectNode :
Si l'emballage dans un objet de support n'est pas souhaitable, vous pouvez utiliser une carte ou ObjectNode de Jackson pour lier plusieurs paramètres dans @RequestBody :
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Map<String, String> json) { //json.get("str1") == "test one" }
Ou :
public boolean getTest(@RequestBody ObjectNode json) { //json.get("str1").asText() == "test one" }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!