No converter found for return value of type解决方法

小咪咪 2022-06-06 09:40 331阅读 0赞

最近在学习SpringMVC过程中,项目在ajax与后台交互的时候,前台的ajax一直接收不到后台Controller返回来的包装类对象的json数据,spring版本为4.2.4,java对象和json对象转换一直报错:

  1. java.lang.IllegalArgumentException: No converter found for return value of type: class cn.itcast.ssm.po.ItemsCustom
  2. at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:178)
  3. at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:153)
  4. at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:165)
  5. at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:80)
  6. at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:126)
  7. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)
  8. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)
  9. at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
  10. at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
  11. at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
  12. at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
  13. at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)
  14. at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
  15. at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
  16. at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
  17. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
  18. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
  19. at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
  20. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
  21. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
  22. at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
  23. at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
  24. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
  25. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
  26. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
  27. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
  28. at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
  29. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
  30. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
  31. at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
  32. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
  33. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
  34. at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
  35. at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
  36. at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2549)
  37. at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2538)
  38. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  39. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  40. at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  41. at java.lang.Thread.run(Thread.java:744)

错误为没有该类型值的转换器,但是@responseBody注解会自动将返回数据封装成json格式,前台接收不到json对象,应该为json包版本冲突问题。
查看使用的json包为:
这里写图片描述

后来改为下面这三个json转换的jar包,
这里写图片描述
启动执行不报错,可以得到json格式的结果:
这里写图片描述
所以如果你也遇到了同样的问题,可以先检查一下是不是jar包不匹配的问题。

有需要jar包的小伙伴可以去下面地址下载:
http://download.csdn.net/download/qq_35917800/10105129

发表评论

表情:
评论列表 (有 0 条评论,331人围观)

还没有评论,来说两句吧...

相关阅读