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
Libérer: 2024-11-11 12:40:03
original
1036 Les gens l'ont consulté

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) {}
Copier après la connexion

nécessite une structure JSON avec chaque variable explicitement déclarée :

{
    "str1": "test one",
    "str2": "two test"
}
Copier après la connexion

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) {}
Copier après la connexion

qui peut être utilisé avec les éléments suivants JSON :

{
    "holder": {
        "str1": "test one",
        "str2": "two test"
    }
}
Copier après la connexion

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"
}
Copier après la connexion

Pour un Nœud d'objet :

public boolean getTest(@RequestBody ObjectNode json) {
   //json.get("str1").asText() == "test one"
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal