我有一个Spring REST Web服务,在我的控制器中,我使用MappingJacksonHttpMessageConverter
将我的返回模型转换为JSON。但是当我使用firebug
进行检查时,会有Content-Type=application/json;charset=UTF-8
。
另外我试图通过使用spring android rest模板从Android客户端解析这个结果,但我一直得到:
无法提取回复:没有 找到合适的HttpMessageConverter 对于响应类型 [xxx.SamplePageActivity $ Result]和 内容类型 应用/ JSON;字符集= UTF-8]
可能是android客户端上的MappingJacksonHttpMessageConverter完全期望类型application/json
所以我的问题是如何将spring的MappingJacksonHttpMessageConverter的返回内容类型从application/json;charset=UTF-8
更改为application/json
。
这是我的视图解析器配置。它可能很有用:
<beans:bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<beans:property name="mediaTypes">
<beans:map>
<beans:entry key="html" value="text/html" />
<beans:entry key="json" value="application/json" />
</beans:map>
</beans:property>
<beans:property name="viewResolvers">
<beans:list>
<beans:bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value="${dispatcher.suffix}" />
</beans:bean>
</beans:list>
</beans:property>
<beans:property name="defaultViews">
<beans:list>
<beans:bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</beans:list>
</beans:property>
</beans:bean>
<beans:bean id="messageAdapter"
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<beans:property name="messageConverters">
<beans:list>
<!-- Support JSON -->
<beans:bean
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
</beans:list>
</beans:property>
</beans:bean>
答案 0 :(得分:3)
您可以使用supportedMediaTypes属性更精确地配置MappingJacksonHttpMessageConverter,如下所示:
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
<property name="supportedMediaTypes">
<list>
<bean class="org.springframework.http.MediaType">
<constructor-arg value="application" />
<constructor-arg value="json" />
<constructor-arg value="#{T(java.nio.charset.Charset).forName('UTF-8')}"/>
</bean>
</list>
</property>
</bean>
根据文档(http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/http/MediaType.html)允许您按顺序设置类型,子类型和字符集 -