Springmvc前臺通過ajax傳值到後臺用@RequestBody接收,報415/400錯誤

CarryBest發表於2017-05-05

傳普通資料沒太大問題,就是傳json格式的資料在後臺轉化為javaBean有點問題

需求:前臺傳json格式的資料,後臺用@RequestBody轉換為對應的javaBean,


1:首先json裡的資料應該對應javaBean裡的屬性,否則肯定會報錯,舉個栗子

{"USER_ID":leader,"Users":users};

上面這個格式的資料,在對應的JavaBean裡一定要有String USER_ID;String Users;這兩個屬性,就是包含的關係


2:出現415/400問題的原因是前臺傳到後臺或者後臺傳到前臺的資料格式不正確,格式應該都為application/json(前臺接受的都為json,text不討論)

解決方法:

first:首先保證這裡沒有配錯

springmvc.xml

<!-- 啟用spring mvc 註解-->
    <mvc:annotation-driven>
<!-- 啟動JSON格式的配置 -->
    <mvc:message-converters>
    <!-- 這裡也可以自己定製class -->
        <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>  
                     <value>application/json</value>                  //伺服器支援json格式的資料,後臺傳到前臺再次設定
                </list>
            </property>
        </bean>
    </mvc:message-converters>
    </mvc:annotation-driven>

second:

var saveData ={"USER_ID":leader,"Users":users};
     $.ajax({
            type : "POST",
            url : "XXXX",
            data : JSON.stringify(saveData),
            contentType : "application/json",              //傳送至伺服器的型別   
            dataType : "json",                                     //預期伺服器返回型別  
            success : function(data) {
                alert(data.msg);
            },error:function(data){
            alert(data.msg);
            }
        });

third:

@RequestMapping(value ={ "/xxx"}, method = { RequestMethod.POST})
@ResponseBody
   public String save(@RequestBody JavaBean型別 aaa) throws Exception {
       log.info("ajax");


        int i=xxxService.xxx(aaa);
        String massage;
        if(i>0){
       
        return "{\"msg\":\"success\"}";          //json格式
        }else{
       
        return "{\"msg\":\"fail\"}";
        }
       
   }

標紅的比較關鍵

相關文章