使用 Ajax 将 @RequestBody 中的多个变量传递给 Spring MVC 控制器
问题:
将 @RequestBody 中的多个变量传递给 Spring MVC 是否需要将参数包装在支持对象中使用 Ajax 进行控制器?
讨论:
问题源于需要在 @RequestBody 中以 JSON 形式传递两个字符串“str1”和“str2”。然而,最初的方法:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody String str1, @RequestBody String str2) {}
需要一个 JSON 结构,其中每个变量都显式声明:
{ "str1": "test one", "str2": "two test" }
但是,使用支持对象更方便,如下所示:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Holder holder) {}
可与以下内容一起使用JSON:
{ "holder": { "str1": "test one", "str2": "two test" } }
答案:
虽然使用支持对象是一种可行的方法,但另一种解决方案是使用 Map 或 ObjectNode 直接绑定到JSON,无需创建单独的对象类。
对于地图:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Map<String, String> json) { //json.get("str1") == "test one" }
对于对象节点:
public boolean getTest(@RequestBody ObjectNode json) { //json.get("str1").asText() == "test one" }
以上是我可以在没有支持对象的情况下使用 @RequestBody 将多个变量传递给 Spring MVC 控制器吗?的详细内容。更多信息请关注PHP中文网其他相关文章!