SpringMVC在使用JSON時報錯信息為:Content type 'application/json;charset=UTF-8' not supported


直接原因是:我的(maven)項目parent父工程pom.xml缺少必要的三個jar包依賴坐標。

解決方法是:在web子模塊的pom.xml里面添加springMVC使用JSON實現AJAX請求。

<!--spring mvc-json依賴-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.9</version>
        </dependency>

<spring.version>5.0.15.RELEASE</spring.version>

jsp頁面的<script>標簽

            //用jQuery實現AJAX請求提交數據到服務器端
            //保存數據到服務器,成功時控制台打印顯示信息
            var selectListTest = new Array();
            selectListTest[0] = "param1";
            selectListTest[1] = "param2";
            selectListTest[2] = "param3";
            $.ajax({
                    type:"POST",
                    url:"${pageContext.request.contextPath}/product/delete.do",
                    contentType:"application/json",//jQuery的ajax提交數組使得springMVC使用必填參數
                    //接收用@requestBody
                    data:JSON.stringify(selectListTest),  //數組通過JSON.stringify格式化
                    success:function (data) {
                        alert(data);
                    }

                });


視圖層Controller類的Method

    //刪除產品的某個分類通過產品編號
    @RequestMapping("/delete.do")
    @ResponseBody
    public String deleteByNum(@RequestBody List<String> selectListTest)throws Exception{
        System.out.println( "JSP頁面通過AJAX技術提交POST請求的路徑找到。" );
        //        productService.deleteByNum(product);


            System.out.println( selectListTest );
        System.out.println( "JSP頁面通過AJAX技術提交字符串數組成功實現。" );

            return"redirect:findAll.do";
    }

 

總結一下,解決該問題需注意一下三點:

  1.  使用jackson依賴jar包。

  2.  jQuery的 $.ajax() 里面需要對JSP頁面里的字符串數組提交之前格式化。

var testList=['1','2','3'];
$.ajax({
     type: "post",
     url: "${pageContext.request.contextPath}/product/delete.do",
 contentType:"application/json", data:JSON.stringify(testList),
     success: function(obj){
         alert(obj.description);
     },
     error: function(obj){
         alert("操作出錯");
         return false;
     }
});

 3. Controller控制層AJAX請求的調用的方法需在參數前加 @RequestBody注解。

  

public void method(@RequestBody List<String> testList) {

  return;
}

 



==================
end

參考資料:

關於Ajax請求傳遞數組參數的解決辦法

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM