Maison > Java > javaDidacticiel > Comment transmettre plusieurs paramètres à un contrôleur Spring MVC à l'aide de @RequestBody avec Ajax ?

Comment transmettre plusieurs paramètres à un contrôleur Spring MVC à l'aide de @RequestBody avec Ajax ?

Patricia Arquette
Libérer: 2024-11-11 12:47:02
original
1102 Les gens l'ont consulté

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

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

Avec une charge utile JSON comme celle-ci :

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

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

Cela nécessite une charge utile JSON comme celle-ci :

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

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

Ou :

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!

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