【发布时间】:2013-08-19 06:40:22
【问题描述】:
我正在尝试将 HashMap 或任何其他 Map 实现从 ajax 发送到 Spring MVC 控制器
这里是我如何做的细节:
Ajax 调用如下
var tags = {};
tags["foo"] = "bar";
tags["whee"] = "whizzz";
$.post("doTestMap.do", {"tags" : tags }, function(data, textStatus, jqXHR) {
if (textStatus == 'success') {
//handle success
console.log("doTest returned " + data);
} else {
console.err("doTest returned " + data);
}
});
然后在控制器端我有:
@RequestMapping(value="/publisher/doTestMap.do", method=RequestMethod.POST)
public @ResponseBody String doTestMap(@RequestParam(value = "tags", defaultValue = "") HashMap<String,String> tags, HttpServletRequest request) { //
System.out.println(tags);
return "cool";
}
不幸的是我系统地得到了
org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'java.lang.String' to required type 'java.util.Map'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [java.util.Map]: no matching editors or conversion strategy found
我做错了什么?
谢谢。
【问题讨论】:
-
看起来 spring 将“tags”参数读取为字符串,而不是映射。这意味着 spring 没有默认的消息转换器,它将字符串转换为映射。所以需要编写自定义MessageConverter并在应用中注册
-
认真的吗? spring 不支持映射到开箱即用的 Map 吗?
-
tags怎么连 jquerypost序列化?它看起来像json。也许你正在寻找@RequestBody。 -
javascript 端的
tags是什么类型?生成的地图会将什么映射到什么?
标签: ajax json spring spring-mvc