Passing Multiple Variables in @RequestBody to a Spring MVC Controller Using Ajax
When attempting to pass multiple variables in a request body to a Spring MVC controller using Ajax, you may face the question of whether it is necessary to enclose the variables within a backing object.
The original query expressed a desire to achieve this using the following approach:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody String str1, @RequestBody String str2) {}
With JSON data resembling:
{ "str1": "test one", "str2": "two test" }
However, the author faced the need to use a holder object instead:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Holder holder) {}
And accompanying JSON:
{ "holder": { "str1": "test one", "str2": "two test" } }
The dilemma lies in the fact that @RequestBody requires mapping to a single object, making the use of multiple parameters in the request body challenging.
While the aforementioned workaround involving a holder object is a valid solution, an alternative approach is available using a Map object:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Map<String, String> json) { //json.get("str1") == "test one" }
This method provides a flexible way to handle multiple variables passed in the request body, allowing access to them via map keys.
Additionally, if you prefer to bind to Jackson's ObjectNode to work with a full JSON tree, you can utilize the following:
public boolean getTest(@RequestBody ObjectNode json) { //json.get("str1").asText() == "test one" }
These alternatives empower you with multiple options for handling multiple variables in a request body, giving you the flexibility to choose the approach that best suits your specific needs.
The above is the detailed content of Can You Pass Multiple Variables in a Request Body to a Spring MVC Controller Using Ajax?. For more information, please follow other related articles on the PHP Chinese website!