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

开发者社区> 问答> 正文

SpringMVC3.2 无法接收json参数

2016-07-04 18:16:30 2635 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
相关问答

1

回答

json数据怎么解析

2018-05-10 19:59:05 1894浏览量 回答数 1

1

回答

json数据怎么解析的

2018-05-10 20:00:09 1168浏览量 回答数 1

2

回答

怎么移出json中的数据

2018-05-10 19:59:18 1508浏览量 回答数 2

1

回答

json数据解析问题求解答

2016-07-06 17:54:08 1663浏览量 回答数 1

1

回答

利用shell将json数据解析后排序问题

2016-06-17 16:56:40 2429浏览量 回答数 1

1

回答

map转成json数据后要怎么解析?

2016-03-20 11:19:30 2673浏览量 回答数 1

1

回答

关于利用shell将json数据解析后排序问题

2016-03-05 12:06:49 3534浏览量 回答数 1

1

回答

Java 客户端Redisson缺点是什么?

2021-10-24 10:27:42 125浏览量 回答数 1

1

回答

springMVC controller中方法接收参数问题,怎么接收json对象

2016-07-07 09:54:46 5437浏览量 回答数 1

1

回答

spring IoC和JFinal的集成

2016-03-16 17:59:02 2622浏览量 回答数 1
+关注
杨冬芳
IT从业
1
文章
9167
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载