SpringMVC3.2 无法接收json参数 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

SpringMVC3.2 无法接收json参数

2016-07-04 18:16:30 2584 1

环境:SpingMVC3.2+jQuery。
问题:方法能访问到。
1)在ajax中使用contentType : "application/json"时,controller无法获取参数。
2)在ajax中不使用contentType时,controller能获取参数,但是会报错,因为参数中含有list,去掉list可以正常访问。
JS方法片段:

$.ajax({
                    contentType :   "application/json",
                    url :   systemWebUrl + "/pi/savePIDetail.do",
                    type    :   "post",
                    dataType    :   "json",
                    //data  :   {"articleVO":JSON.stringify(formData)},
                    data    :   formData,//JSON.stringify(formData),
                    success :   function(data){
                        console.log(data);
                    }
});

其中传入后台的参数formData数据类似:

{"nodeId":"8","title":"abc","isOriginal":"1","keywords":"abc","summary":"abc","coverResourceId":"","contents":[{"type":"1","content":"asdf"},{"type":"1","content":"wqer"}]}


Controller代码片段:
@RequestMapping("/savePIDetail")
@ResponseBody
public String savePIDetail(ArticleVO articleVO){
        ModelMap map = new ModelMap();
        ArticleVO article = new ArticleVO();
        //ArticleVO article = JSON.parseObject(articleVO,ArticleVO.class);
        map.put("msg", articleVO);
        return JSON.toJSONString(map);
}

参数ArticleVO片段:

…………
/**
     * 是否原创
     */
private Boolean isOriginal;
    /**
     * 摘要
     */
private String summary;
 /**
     * 内容列表
     */
private List<ArticleContentVO> contents;

getter/setter

mvc.xml配置片段:

<mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <ref bean="fastJsonHttpMessageConverter"/>
        </mvc:message-converters>
</mvc:annotation-driven> 

<bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> 
        <property name="supportedMediaTypes">
            <list>
                <value>application/json;charset=UTF-8</value>
                <value>text/html;charset=UTF-8</value>
                <value>text/plain;charset=UTF-8</value>
            </list>
        </property>
</bean>

我觉得上面这段配置返回时才用得到。

ajax中不使用contentType时,并且参数有list,后台报错内容片段:

 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.InvalidPropertyException: Invalid property 'contents[0][content]' of bean class [com.xxx.admin.vo.ArticleVO]: Property referenced in indexed property path 'contents[0][content]' is neither an array nor a List nor a Map; returned value was [asdf]

折腾了几天了,没找到原因,使用字符串传到后台,然后JSON.parseObject()也能使用,但是总觉得不该是这样的,请大家帮忙看下原因,如果问题没有描述清楚的,请提出来,我再改,谢谢了。

取消 提交回答
全部回答(1)
  • 杨冬芳
    2019-07-17 19:51:03

    目前问题算是解决了,除了问题描述中说的“使用字符串传到后台,然后JSON.parseObject()”,还有一种方法:在方法参数前加@RequestBody,ajax中data:JSON.stringify(formData)。
    JSON.parseObject()

    0 0
相关问答

5

回答

Spark 【问答合集】

社区小助手 2019-05-29 14:13:40 130195浏览量 回答数 5

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 160036浏览量 回答数 145

28

回答

钉钉开放平台“常见问题常见问题常见问题“重要请关注

竹梅 2015-12-03 00:39:14 96691浏览量 回答数 28

3

回答

Logstash采集文件名称以及自定义格式的日志文件采集

Snorlax 2019-06-18 11:51:28 116059浏览量 回答数 3

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 148997浏览量 回答数 22

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 148118浏览量 回答数 31

1

回答

出现这个问题求解决This XML file does not appear to have any

淘合肥 2017-04-08 21:07:00 100341浏览量 回答数 1

43

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 144683浏览量 回答数 43

251

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 310391浏览量 回答数 251

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 486333浏览量 回答数 24
+关注
杨冬芳
IT从业
1
文章
9167
问答
问答排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载