【Json与Ajax交互报错解决】No converter found for return value of type: cl

举报
灰小猿 发表于 2021/08/23 08:39:41 2021/08/23
【摘要】 ​ Hello。你好呀,我是灰小猿,一个超会写bug的程序猿!我今天又来修BUG了!!​事情是这样的:今天在整合SSM,读取数据库数据返回JSON字符串,并传递给前端界面Ajax进行交互的时候,向后台发送请求想要获取到返回的json数据,但是却出现了这样的错误,页面显示500:​HTTP Status 500 - org.springframework.web.util.NestedServ...

 

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

我今天又来修BUG了!!

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

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;
	}

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

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

网上的解决基本上都是说导入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包,具体为什么冲突我也不知道........

我的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>

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

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

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



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。