項目:Spring+SpringMVC+Mybatis+Mysql
JDK:1.8
spring:5.0.7.RELEASE
MySql:8
org.springframework.http.converter.HttpMessageNotWritableException:
No converter found for return value of type: class java.util.ArrayList
.
原因:返回前端的List<User>對象集合, 沒有經過json轉換器,轉成json數據格式。
解決方法:
在pom.xml中添加jackson依賴
<properties>
<!-- 版本 -->
<jackson.version>2.9.8</jackson.version>
</properties>
<!-- 依賴 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
並在spring-mvc.xml中進行如下配置:
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
若是有java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException
很大可能是因爲Spring和jackson的版本衝突導致的
最後,解析完成:
當然還差最後一點:使用IE時會下載json數據,爲防止這一點你可以這樣:
<!--替換原來的 <mvc:annotation-driven/> -->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes" >
<list>
<value>text/html;charset=UTF-8</value>
<value>text/json;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
你也可以參考這個:spring mvc ajax上傳文件 避免IE返回JSON出現下載文件