SpringMVC报错No converter found for return value of type的一种解决方案

  • 很久没有写过javaWeb的代码了,最近用javaWeb(没有使用maven和gradle)引入spring4.3.9相关的包做开发时遇到一些问题。其中一个是:
严重: 在路径为/xxh的上下文中,Servlet[dispatcher]的Servlet.service()引发了具有根本原因的异常Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class xyz.ruankun.xxh.vo.ReponseVO
java.lang.IllegalArgumentException: No converter found for return value of type: class xyz.ruankun.xxh.vo.ReponseVO
	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:187)
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:174)
	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:81)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:113)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
	......

在这里插入图片描述

  • 那么如何报了这个错误呢?

  • 原因是我配置了一个RestController并且返回了一个对象。
    在这里插入图片描述

  • 这个controller定义本身没有问题,在看看我dispatcher-servlet.xml中关于messageConverter的配置:
    在这里插入图片描述
    很明显,我没有定义什么类型的消息转换器。

  • 从网上搜索得到的答案是spring默认是依赖jackson来做消息转换处理的,不需要配置。但是我看看我的依赖里面:
    在这里插入图片描述

  • 我使用的是fastJson,所以springmvc没有办法将返回的对象转换成json对象就报错了。所以解决的办法现在有两个:

  • 一是将fastJson改为jackson,引入jackson的包。

  • 二是配置一下fastJson的messageConvertor

	<mvc:annotation-driven>
		<mvc:message-converters>
			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
				<property name="defaultCharset" value="utf-8">
				</property>
			</bean>
			<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html;charset=UTF-8</value>
                        <value>application/json</value>
                    </list>
                </property>
                <property name="features">
                    <list>
                        <value>WriteMapNullValue</value>
                        <value>QuoteFieldNames</value>
                    </list>
                </property>
            </bean>
		</mvc:message-converters>
	</mvc:annotation-driven>

除此之外,还有一些是因为没有在java Object中添加setter方法,最好把getter也加上。还有一些是因为其它奇怪的原因,这一类问题建议一是在思考一下,冷静下来调试一下代码;另外一个是多用百度和谷歌搜一搜,应该是能解决问题的,都是时间问题。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值