如何将javascript(js)映射传递给spring boot Controller?
Posted
技术标签:
【中文标题】如何将javascript(js)映射传递给spring boot Controller?【英文标题】:How to pass a javascript (js) Map to spring boot Controller? 【发布时间】:2018-11-03 16:22:03 【问题描述】:我有一个包含键值对的 Java Script 映射,我需要将其发送到 Spring Boot 控制器:--
示例:--
var myMap = new Map();
myMap.set('1', 'value1');
myMap.set('2', 'value2');
我无法在我的 Spring Boot 控制器中获取此 javascript (js) 映射。 根据我的最佳实践,我试图在 java 的 HashMap 或 Map 中获取此地图。 高度赞赏帮助。 :)
【问题讨论】:
将其转换为 JSON 并通过 AJAX 发布.. 【参考方案1】:试试下面:
var myMap = ;
myMap["names"] = ["Alex"];
myMap["fruit"] = ["Apple"];
修改 javascript 代码以使用 Ajax:
$.ajax(
type : "POST",
url : "/reqURL",
contentType: "application/json",
data : JSON.stringify(myMap) // .....
控制器代码如下:
@RequestMapping(value = "/reqURL", method = RequestMethod.POST, consumes="application/json")
@ResponseBody
public List<String> reqControl(@RequestBody Map<String, List<String>> myMap)
// do something with parameters ...
【讨论】:
非常感谢 Amit 的回复,上述建议绝对正确但是,JSON.stringify 无法正常工作,因为它正在打印——浏览器控制台和 spring 控制器上的“”(“ ") .
怎么来,JSON 结构需要用
括起来,分享一个示例 JSON,Spring Controller 是否在抱怨无法转换为 aMap?
此解决方案有效/无效!!地图的处理方式不同。【参考方案2】:
我已经找到了解决方案:-
var myMap = new Map();
myMap.set('1', 'value1');
myMap.set('2', 'value2');
myMap.set('3', 'value3');
myMap.set('4', 'value4');
//Making JS Map compatible for JSON.Stringify
const out = Object.create(null)
myMap.forEach((value, key) =>
if (value instanceof Map)
out[key] = map_to_object(value)
else
out[key] = value
)
$.ajax(
type : "POST",
url : "/yourURL",
contentType: "application/json",
data : JSON.stringify(myMap) //......
@RequestMapping(value = "/yourURL", method = RequestMethod.POST, consumes="application/json")
@ResponseBody
public List<String> reqControl(@RequestBody Map<String,<String> myMap)
// further code.
【讨论】:
以上是关于如何将javascript(js)映射传递给spring boot Controller?的主要内容,如果未能解决你的问题,请参考以下文章
Socket.io、Node.js:如何在 javascript.js 中将 javascript 变量传递给 mysql 查询?