關於No converter found for return value of type: class java.util.ArrayList

項目: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

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出現下載文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章