2011-04-20 53 views
4

我有一个spring REST web服务,在我的控制器中我使用MappingJacksonHttpMessageConverter将我的返回模型转换为JSON。但是当我用firebug检查它时,有Content-Type=application/json;charset=UTF-8如何将MappingJacksonHttpMessageConverter的内容类型从application/json; charset = UTF-8更改为application/json

而且我想用弹簧的Android休息模板来自Android客户端解析这个结果,但我不断收到:

无法提取响应:没有 适合HttpMessageConverter发现 为响应类型 [XXX .SamplePageActivity $结果]和 内容类型 应用/ JSON;字符集= UTF-8]

它也许的情况下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> 

回答

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)允许您设置的类型,子类型和charset,按顺序 -

相关问题