私は@ResponseBodyを使用してSpringMVCでJsonオブジェクトを返しています。リリース4.0.7および3.2.11では期待どおりに機能しますが、他の構成を変更せずに最新のSpringリリース4.1.1(10/16現在)を使用しようとすると、HTTPステータス406が返されます。これはバグと見なされますか、それとも4.1.1では異なる構成が必要ですか?
最新のjacksonjarはすでにクラスパスにあります
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
春の例 document 正常に動作します
@RequestMapping(value = "/something", method = RequestMethod.PUT)
@ResponseBody
public String helloWorld() {
return "Hello World";
}
戻り値の型がStringの場合。この問題は、戻り値の型がPOJOの場合に発生します。
Maven pom.xml:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
およびSpringMVC構成ファイル(例: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>
Jackson 1. *を削除して2.4.4(JAXRS)に置き換えた後、機能するようになりました。これにより、他のすべての依存関係、jackson-core、jackson-databind、jackson-annotationsがインポートされます。
削除
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
追加
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-base</artifactId>
<version>2.4.4</version>
</dependency>
http://www.codingpedia.org/AMA/jquery-ui-autocomplete-not-working-in-spring-4-1/
サーブレットxmlで
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" />
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="favorPathExtension" value="false" />
<property name="favorParameter" value="true" />
<property name="mediaTypes" >
<value>
json=application/json
xml=application/xml
</value>
</property>
</bean>
ジャクソンアノテーションがクラスファイルにインポートされている場合は、それも置き換える必要があります
削除
org.codehaus.jackson.annotate.JsonIgnorePropertiesをインポートします
追加
com.fasterxml.jackson.annotation.JsonIgnorePropertiesをインポートします
3.2からSpring4.2に移行する同様の問題に苦労していました。取得していた
例外名で見つけられるようにここに投稿してください:)この記事を見つけるのに半日かかりました。 @Vitoと@Aiasに感謝します
以前の両方の回答の組み合わせも同様に機能します。カスタムcontentNegotiationManager
を登録したくない場合は、次のようにすることができます。
からすべてのjackson依存関係を削除します
最新のものを使用します
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-base</artifactId>
<version>2.6.1</version>
</dependency>
<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>