springmvc中级-返回json详解

一、测试页面

<script type="text/javascript" src="scripts/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
   //测试 json 函数
	$(function(){
		$("#testJson").click(function(){
			var url = this.href;
			var args = {};
			//这个是jQuery版的 ajax 函数 
			$.post(url, args, function(data){
				for(var i = 0; i < data.length; i++){
					var id = data[i].id;
					var lastName = data[i].lastName;
					
					alert(id + ": " + lastName);
				}
			});
			return false;
		});
	})
</script>
</head>

<body>
<a href="testJson" id="testJson">测试json</a>
</body>

二、编辑控制器

返回的是:JSON 对应的对象或集合。
然后 在方法上添加@ResponseBody 注解

@ResponseBody
@RequestMapping("/testJson")
public Collection<Employee> testJson(){
	return employeeDao.getAll();
}

三、遇到转换错误

SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [/springmvc-2] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.HashMap$Values] with root cause

后来我发现:缺少转换的jar包。将hashmap 转换成 json。
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/
下载三个jar包:jackson-annotations;jackson-core;jackson-databind

特别强调一个bug:

一开始:下载的三个jar包 jackson-annotations;jackson-core;jackson-databind 版本号是 :2.1.5 结果还是 报错了:

nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/DefaultIndenter

于是在网上下载了 三个jar包 的 最新版 :2.9.6
结果终于好了,没有再报错了。

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments