Passer plusieurs variables dans @RequestBody au contrôleur Spring MVC avec Ajax
Question :
L'encapsulation des paramètres dans un objet de support est-elle nécessaire pour transmettre plusieurs variables dans @RequestBody à un contrôleur Spring MVC avec Ajax ?
Discussion :
La question découle de la nécessité de transmettre deux chaînes, "str1" et "str2", en tant que JSON dans le @RequestBody. Cependant, l'approche initiale :
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody String str1, @RequestBody String str2) {}
nécessite une structure JSON avec chaque variable explicitement déclarée :
{ "str1": "test one", "str2": "two test" }
Cependant, il est plus pratique d'utiliser un objet de support, comme le montre :
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Holder holder) {}
qui peut être utilisé avec les éléments suivants JSON :
{ "holder": { "str1": "test one", "str2": "two test" } }
Réponse :
Bien que l'utilisation d'un objet de support soit une approche viable, une solution alternative consiste à utiliser un Map ou un ObjectNode pour se lier directement au JSON sans créer de classe d'objet distincte.
Pour une carte :
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Map<String, String> json) { //json.get("str1") == "test one" }
Pour un Nœud d'objet :
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!