先说结论吧,通过 JSP 是无法直接使用map的(这里指的是 new Map()),但在 html 中是可以的
在 HTML 中创建 map 并使用,如:
但在 JSP 中使用这种方式创建的 map 传到后端,里面的内容竟然会没有,如:
① JSP 页面代码为(此时后端接收到的 map 的 size 为0,也就是说内容没传过去):
var condition = new Map();
condition.set( "page",page);
condition.set( "pagesize",pagesize);
condition.set("key","value");
getDataByCondition(url,condition); // 调用 ajax 发送数据
function getDataByCondition(url,condition) {
$.ajax({
url:url,
type:"post",
datatype:"json",
contentType:"application/json;charset=utf-8",
data:JSON.stringify(condition),
async:false,
success:function (data) {
}
});
}
② 后端代码为:
@ResponseBody
@RequestMapping("xxx")
public void getConditionData( @RequestBody Map<String,Object> map){
System.out.println("条件获取数据....");
System.out.println(" ,map size ;"+map.size());
for (String m : map.keySet()){
System.out.println("key : "+ m +" ,value :"+map.get(m));
}
}
运行是不行的,里面并没有将map 数据传过来,结果如图所示:
解决方法: 创建对象,并动态为该对象添加属性,如下所示:
var map={aa:"abc",bb:123};
map.cc = "cc";
map['dd'] = 'dd';
var name = "张三";
map["name"] = name;
更改后,再运行如下: