当前位置: 代码迷 >> 综合 >> JavaWeb项目中出现No converter found for return value of type的解决方法
  详细解决方案

JavaWeb项目中出现No converter found for return value of type的解决方法

热度:21   发布时间:2023-12-26 19:30:23.0

目录

异常展示:

解决方法

原理:

拓展


异常展示:

意思就是找不到返回值类型的转换器,其实就是你的controller在进行json数据返回的时候,找不到进行json数据转换的转换器。我这里使用的是SSM框架作为底层框架,写了统一响应结果类,controller使用@RestController或者@Conroller+@ResponseBody注解直接向前端返回json数据。

异常:

org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class cn.poison.orcode.entity.ResponseEntityorg.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:221)org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:182)org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:82)org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:119)org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:871)org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:777)org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870)javax.servlet.http.HttpServlet.service(HttpServlet.java:634)org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855)javax.servlet.http.HttpServlet.service(HttpServlet.java:741)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

解决方法

只针对maven工程的JavaWeb项目,如果是使用导入jar包的形式,自行去了解

添加以下依赖到你的maven工程的pom.xml文件

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

原理:

当controller的方法标记@ResponseBody或者Controller标记@RestController注解后,会用解析器去解析Controller的返回值,解析器会去搜索SpringMVC中注册的HttpMeesageConverter接口的实现类,如果没有添加对应的依赖,就会报出找不到Json类型的转换器异常

拓展

如果是Springboot项目的话,不用这么麻烦,因为你只需要添加web的启动依赖即可,不要再额外添加解析器的依赖,以为springboot都做了底层的依赖管理


<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

希望可以帮到有需要的朋友!

  相关解决方案