1:自己研究的
1) 页面ajax代码
msgObj = {"data":{"2013-11-08":3,"2013-11-07":5,"2013-11-06":3,"2013-11-05":12},"indata":{"2013-11-08":9,"2013-11-07":7,"2013-11-06":23,"2013-11-05":5}}; $.ajax({ type:'post', url:'${projectPath}/update', data:{"channelType":upchannel_type,"channel":upchannel,"day":upchannel_day,"startTime":upchannel_startTime,"endTime":upchannel_endTime,"database":upchannel_db,"source":backmsgObj,"up":msgObj},//msgobj是json对象 dataType:'text',//服务器返回的数据类型 可选XML ,Json jsonp script htmltext等 success:function(msg){ }, error:function(){ alert('error'); } })2):javabean
private String channel; private String channelType; private String day; private String startTime; private String endTime; private String database; private Map<String,Map<String,String>> source; private Map<String,Map<String,String>> up; //结构与js中的json对象结构一致3)controller modle
@RequestMapping("/update") public String updateBandwidth(@ModelAttribute SearchBean searchBean, HttpServletRequest request, HttpServletResponse response) throws Exception{ System.out.println("source :"+searchBean.getSource().toString()); System.out.println("up :"+searchBean.getUp().toString()); return null; }
2:在网上找的,不过试了好久没成功
在用 spring mvc 写应用的时候发现jquery传递的【json数组对象】参数后台接收不到,多订单的处理,ajax请求:
开始如何传后台用 @RequestParam 去接收如何都接不到,分析下请求头,原来是json格式没转换
通过观察,orders[0][storeId]:0a1
orders[0][address]:西斗门路2号
orders[0][goods][0][goodsId]:1 变成了多维数组的格式传递,没有按json对象的方式传递(原以为 jquery会自动转的,可惜我想多了,所以出现了乌龙)。
下了个jquery的json插件,jquery.json-2.4.js 转了下json;但是问题又来了,传的格式正确但是后台还是接不到,打印了下request.getParameterMap(),参数按json格式传进来,但是接的方式又出现了问题,用string接肯定不行,String数组接也接不到,List也接不到,网上查查相关Controller的接收json对象的方式,需要用@RequestBody来进行接收,为了方便干脆把 orders去掉 直接用json数组
后台用
这种方法来接
检查下参数写法,应该没错,测试之后还是有问题 报了这样一个错误:
POST http://localhost/test/order 415 (Unsupported Media Type) 这个问题应该是前台请求过程中没有指明contentType,ajax中加上contentType: "application/json; charset=utf-8",再测试,果然可以了。完整代码如下:
ajax:
Controller method:
以上希望能为遇到类似问题的朋友提供一些帮助。
- var cmd = {orders:[{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"1"}, {"goodsId":"2"}, {"goodsId":"3"}]},{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"4"}, {"goodsId":"4"}, {"goodsId":"5"}]}]}
- $.ajax({
- url : url,
- type : "POST",
- datatype:"json",
- data : cmd,
- success : function(data, stats) {
- if (stats == "success") {
- // window.location.href="/yc"
- }
- },
- error : function(data) {
- alert("请求失败");
- }
- });
开始如何传后台用 @RequestParam 去接收如何都接不到,分析下请求头,原来是json格式没转换
- Origin:http://localhost
- Referer:http://localhost/test/myorder
- User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
- X-Requested-With:XMLHttpRequest
- Form Dataview URL encoded
- orders[0][storeId]:0a1
- orders[0][address]:西斗门路2号
- orders[0][goods][0][goodsId]:1
- orders[0][goods][1][goodsId]:2
- orders[0][goods][2][goodsId]:3
- orders[1][storeId]:0a1
- orders[1][address]:西斗门路2号
- orders[1][goods][0][goodsId]:4
- orders[1][goods][1][goodsId]:4
- orders[1][goods][2][goodsId]:5
- Response Headersview source
- Content-Length:1051
- Content-Type:text/html;charset=utf-8
- Date:Mon, 26 Nov 2012 16:10:07 GMT
- Server:Apache-Coyote/1.1
通过观察,orders[0][storeId]:0a1
orders[0][address]:西斗门路2号
orders[0][goods][0][goodsId]:1 变成了多维数组的格式传递,没有按json对象的方式传递(原以为 jquery会自动转的,可惜我想多了,所以出现了乌龙)。
下了个jquery的json插件,jquery.json-2.4.js 转了下json;但是问题又来了,传的格式正确但是后台还是接不到,打印了下request.getParameterMap(),参数按json格式传进来,但是接的方式又出现了问题,用string接肯定不行,String数组接也接不到,List也接不到,网上查查相关Controller的接收json对象的方式,需要用@RequestBody来进行接收,为了方便干脆把 orders去掉 直接用json数组
- var cmd = [{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"1"}, {"goodsId":"2"}, {"goodsId":"3"}]},{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"4"}, {"goodsId":"4"}, {"goodsId":"5"}]}]
- (@RequestBody List orders)
检查下参数写法,应该没错,测试之后还是有问题 报了这样一个错误:
POST http://localhost/test/order 415 (Unsupported Media Type) 这个问题应该是前台请求过程中没有指明contentType,ajax中加上contentType: "application/json; charset=utf-8",再测试,果然可以了。完整代码如下:
ajax:
- var cmd = [{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"1"}, {"goodsId":"2"}, {"goodsId":"3"}]},{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"4"}, {"goodsId":"4"}, {"goodsId":"5"}]}]
- $.ajax({
- url : url,
- type : "POST",
- datatype:"json",
- contentType: "application/json; charset=utf-8",
- data : $toJSON(cmd),
- success : function(data, stats) {
- if (stats == "success") {
- // window.location.href="/yc"
- }
- },
- error : function(data) {
- alert("请求失败");
- }
- });
Controller method:
- @RequestMapping(value = "/order", method = RequestMethod.POST)
- public ModelAndView order(@RequestBody List<Map<String,Object>> orders) {
- System.out.println("orders size:" + orders.size());
- }
以上希望能为遇到类似问题的朋友提供一些帮助。
相关推荐
本文通过代码实例介绍spring mvc 接收json数据的方法,具体详情如下所示: 接收JSON 使用 @RequestBody 注解前台只需要向 Controller 提交一段符合格式的 JSON,Spring 会自动将其拼装成 bean。 1)在上面的项目中...
spring mvc拦截器,过滤json数据中的null值,将null变成空字符串,内含截图,及jar包
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...
该项目在以前的基础上整合了json的使用
spring mvc生成xml或json
Spring MVC--8.JSON、国际化、文件上传
用来解决SpringMVC+Ajax技术中前台报406的错误信息,实现后台json格式与前台一致
spring mvc 常用开发框架 jar包 提高开发效率 降低开发难度
Spring mvc 返回数据格式采用统一的对象(JSONReturn)进行封装 09. 通过自定义处理器 ExceptionIntercept 实现 Spring mvc的全局异常捕获 10. 系统中包含了企业中采用的开发工具类的集合 11. AbstractDao 父类...
精通Spring MVC 4 中文
本文详细介绍spring MVC的原理和开发心得体会。
4.Spring MVC 域对象共享数据案例 5.Spring MVC @ModelAttribute 注解案例 6.Spring MVC 国际化案例 7.Spring MVC 请求转发与请求重定向案例 8.Spring MVC 下载 Excel 文档的需求案例 9.Spring MVC RESTful 风格的...
主要为大家详细介绍了SpringMVC接收多个对象的4种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...
工程文件 博文链接:https://starscream.iteye.com/blog/1067606
首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...
本书重在讲述如何通过Spring MVC来开发基于Java的Web应用。全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式语言、JSTL、国际化、...
最新spring3 mvc restful urlrewrite jquery json freemarker整合架构jar图片,欢迎下载: 说明比较少,群号:24172014,不懂来问,已懂讨论