• 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请求传递数组参数的解决办法

    
    
    部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。
  • 相关阅读:
    CLR c++/CLI 如何返回多个返回值
    在php 中显示array数据
    MVC已死,该是用MOVE的时候了
    拿到网规证书后,办北京户口的遭遇。
    利亚德股票限售股解禁表
    32位MSSQL数据库备份如何在64位MSSQL数据库上恢复
    利用DNS实现负载均衡
    购买服务器具体和什么参数有关
    简单来总结一下C++与C#之间的区别
    c# 操作DOS ping命令判断与指定主机是否可以通信
  • 原文地址:https://www.cnblogs.com/MarlonKang/p/11563851.html
Copyright © 2020-2023  润新知