如何将MappingJacksonHttpMessageConverter的内容类型从application/json;charset=UTF-8更改为application/json?

4
我有一个Spring REST Web服务,我的控制器中使用MappingJacksonHttpMessageConverter将返回的模型转换为JSON格式。但是当我用firebug检查时,Content-Type=application/json;charset=UTF-8。
此外,我正在尝试使用Spring Android Rest Template在Android客户端上解析此结果,但我不断收到以下错误信息:
无法提取响应:找不到适合的HttpMessageConverter,对于响应类型[xxx.SamplePageActivity$ Result]和内容类型application/json; charset=UTF-8]
这可能是MappingJacksonHttpMessageConverter在Android客户端端期望的完全是application/json类型。
所以我的问题是如何将Spring的MappingJacksonHttpMessageConverter的返回Content-Type从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>
1个回答

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),您可以按照类型、子类型和字符集的顺序设置 MediaType。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接