Как изменить тип содержимого MappingJacksonHttpMessageConverter с application / json; charset = UTF-8 на application / json - PullRequest
4 голосов
/ 20 апреля 2011

У меня есть весенний веб-сервис REST, и в моих контроллерах я использую MappingJacksonHttpMessageConverter для преобразования возвращаемых моделей в JSON. Но когда я проверяю это с firebug, появляется Content-Type=application/json;charset=UTF-8.

Также я пытаюсь проанализировать этот результат из Android-клиента с помощью весеннего шаблона Android, но я продолжаю получать:

Не удалось извлечь ответ: нет Подходящий HttpMessageConverter найден для типа ответа [xxx.SamplePageActivity $ Result] и Тип содержимого Применение / JSON; кодировка = UTF-8]

Это может быть тот случай, когда MappingJacksonHttpMessageConverter на стороне клиента Android ожидает точно тип application/json

Поэтому мой вопрос заключается в том, как изменить возвращаемый Content-Type 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>

1 Ответ

3 голосов
/ 04 декабря 2011

вы можете более точно настроить MappingJacksonHttpMessageConverter, используя свойство supportMediaTypes, например так:

<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), позволяет вам установить тип, подтип и кодировку, в этом порядке -

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...