Maison >Java >javaDidacticiel >Puis-je transmettre plusieurs variables à un contrôleur Spring MVC avec @RequestBody sans objet de support ?

Puis-je transmettre plusieurs variables à un contrôleur Spring MVC avec @RequestBody sans objet de support ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-11 12:40:031064parcourir

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn