一、测试页面
<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
结果终于好了,没有再报错了。