鍍金池/ 問答/Java  HTML/ ajax POST提交的JSON對象為何不能被SpringMVC控制器賦給對應的

ajax POST提交的JSON對象為何不能被SpringMVC控制器賦給對應的類實例參數(shù)?

根據(jù)這篇文章, http://blog.csdn.net/lsy0903/...
我用ajax,如下

    $.ajax({
            url: "${ctx}/dict/add",
            type: "post",
            dataType: "json",
            contentType: "application/json",
            async: false,
            data: JSON.stringify(args),
            。。。
            。。。
            

args是一個json對象
然后在java后臺用SpringMVC的controller接收

@RequestMapping(value = "add", method = RequestMethod.POST)
@ResponseBody
public String add(@RequestBody Dict dict){
    。。。
    。。。
    

不成功,我調試發(fā)現(xiàn),HttpServerletRequest的對象里,getParameterMap()的結果都是空

clipboard.png

配置:

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager">
    <mvc:message-converters register-defaults="true">
        <!-- 將StringHttpMessageConverter的默認編碼設為UTF-8 -->
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <constructor-arg value="UTF-8" />
        </bean>
        <!-- 將Jackson2HttpMessageConverter的默認格式化輸出為true -->
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="prettyPrint" value="true"/>
            <property name="objectMapper">  
                <bean class="com.eversec.windowtool.common.mapper.JsonMapper"></bean>  
            </property> 
        </bean>

這是怎么回事啊?

回答
編輯回答
愿如初

你看錯地了。
看下你的@RequestBody Dict dict對象數(shù)據(jù)。

HttpServerletRequest#getParameterMap獲取的是你url中queryString中的參數(shù)。如:

demo.com?a=b&c=d&e=f
2017年8月10日 19:43
編輯回答
涼心人

可以先使用 console.log(JSON.stringify(args)) 看看 JSON.stringify(args) 的內(nèi)容,然后檢查 Dict 這個類的字段名稱和 args 的那些鍵是否一致。

2018年5月26日 23:33