首页 >Java >java教程 >我可以在没有支持对象的情况下使用 @RequestBody 将多个变量传递给 Spring MVC 控制器吗?

我可以在没有支持对象的情况下使用 @RequestBody 将多个变量传递给 Spring MVC 控制器吗?

Linda Hamilton
Linda Hamilton原创
2024-11-11 12:40:031064浏览

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

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn