【Json与Ajax交互报错解决】No converter found for return value of type: class com.github.pagehelper.PageInfo

简介: 【Json与Ajax交互报错解决】No converter found for return value of type: class com.github.pagehelper.PageInfo

 

Hello。你好呀,我是灰小猿,一个超会写bug的程序猿!

我今天又来修BUG了!!

image.gif编辑

事情是这样的:今天在整合SSM,读取数据库数据返回JSON字符串,并传递给前端界面Ajax进行交互的时候,向后台发送请求想要获取到返回的json数据,但是却出现了这样的错误,页面显示500:

image.gif编辑

HTTP Status 500 - org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class com.github.pagehelper.PageInfo

我翻译了一下大概意思就是:

请求处理失败; 嵌套异常是java.lang.IllegalArgumentException:没有找到转换器的类型返回值:类com.github.pagehelper.PageInfo  

然而我的能够从数据库中读取到数据并且返回JSON字符串的代码是这样的:

/**
   * 返回的数据携带json字符串 需要导入jackson包 
   * @param pn
   * @param model
   * @return
   */
  @RequestMapping("/emps")
  @ResponseBody
  public PageInfo getEmpsWithJson(@RequestParam(value = "pn", defaultValue = "1") Integer pn) {
    // 传入需要跳转的页面以及展示的数据量
    PageHelper.startPage(pn, 5);
    // 获取到全部数据
    List<Employee> employees = employeeService.getAll();
    System.out.println("查询到的数据:");
    System.out.println(employees);
    // 使用pageinfo包装查询的数据,只需要将pageinfo交给页面即可
    // 传入数据,以及要显示多少页
    PageInfo page = new PageInfo(employees, 5);
    System.out.println("封装数据:");
//    System.out.println(page);
    return page;
  }

image.gif

我这里使用了@responseBody注解,该注解的作用就是会自动将返回数据封装成json格式,但是现在我的前台接收不到封装的json对象,查到的数据也无法封装成JSON对象,

最开始我找不到问题的解决,在网上找到了很多类似的错误,但是他们回答都模棱两可,并不能实际的解决问题,难道说程序员寻找bug的救命稻草的时候都是这样的嘛?

image.gif编辑

网上的解决基本上都是说导入json的依赖,但是现在使用Maven做项目的时候,在pom.xml中引入json的依赖坐标,一般都会自动生成相应的三个jar包,分别是

    • jackson-databind-x.x.x.jar
    • jackson-annotations-x.x.x.jar
    • jackson-core-x.x.x.jar

    小伙伴们看一下,如果说哪个小伙伴发现确实是缺少这三个jar中的其中一个,那么你去导入一下就行了,导入的时候可以到如下的maven仓库导入:

    https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.7.4

    但是现在基本上都不会说是缺少上面的哪个jar包了,

    所以如果你并没有缺少jar包,那么应该咱们的问题就一样了!

    解决方案:

    对于No converter found for return value of type错误,原因一般都是jar包版本冲突的问题,和它冲突的jar包是spring的相关jar包,具体为什么冲突我也不知道........

    image.gif编辑

    我的spring的jar包的版本是4.3.7的,然后json的版本使用2.8.8的运行会报上述错误,

    所以解决就是更换其他版本的json的jar包,我建议的是更换低版本的,我更换了2.7.4的jar包,然后再运行就可以了,如果你的不行,你可以再换个其他版本的jar包试试,

    在pom.xml中导入json的jar包的依赖代码是:

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.7.4</version>
    </dependency>

    image.gif

    接着重新启动tomcat,再运行就正确了!

    image.gif编辑

    如果大家还有其他解决方法,欢迎留言提出!

    我是灰小猿,我们下期见!

    image.gif编辑

    目录
    相关文章
    |
    3月前
    |
    前端开发 API UED
    Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
    Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
    121 2
    |
    1月前
    |
    JSON Java 关系型数据库
    Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
    在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
    70 4
    Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
    |
    1月前
    |
    JSON 前端开发 JavaScript
    聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
    在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
    42 4
    |
    1月前
    |
    XML 前端开发 JavaScript
    PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
    本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
    48 3
    |
    1月前
    |
    前端开发 API 开发者
    Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
    在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
    53 1
    |
    1月前
    |
    存储 JSON 监控
    公司用什么软件监控电脑:JSON 在监控信息交互中的应用探索
    在现代企业管理中,电脑监控软件广泛应用于保障信息安全和提升工作效率。JSON(JavaScript Object Notation)因其简洁和易读性,在监控信息的收集、传输和处理中扮演着关键角色。本文介绍了 JSON 在监控数据结构、信息传输及服务器端处理中的具体应用,展示了其在高效监控系统中的重要性。
    38 0
    |
    2月前
    |
    前端开发 API 开发者
    从零到精通,AJAX与Fetch API让你的Python Web前后端交互无所不能!
    从零到精通,AJAX与Fetch API让你的Python Web前后端交互无所不能!
    48 3
    |
    2月前
    |
    存储 JSON 前端开发
    JSON与现代Web开发:数据交互的最佳选择
    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也便于机器解析和生成。它以文本格式存储数据,常用于Web应用中的数据传输,尤其是在客户端和服务器之间。
    82 0
    |
    3月前
    |
    JSON 前端开发 JavaScript
    JavaWeb基础8——Filter,Listener,Ajax,Axios,JSON
    Filter过滤器、Listener监听器、AJAX、 同步、异步优点和使用场景、Axios异步框架、JSON、js和JSON转换、案例,Axios + JSON 品牌列表查询和添加
    JavaWeb基础8——Filter,Listener,Ajax,Axios,JSON
    |
    4月前
    |
    XML 存储 前端开发
    后端程序员的前后端交互核心-Ajax
    后端程序员的前后端交互核心-Ajax
    63 6
    后端程序员的前后端交互核心-Ajax