настройка jacksonObjectMapper не работает весной MVC 3 - PullRequest
5 голосов
/ 30 мая 2011

Я собираюсь настроить Spring mvc 3 так, чтобы он не возвращал «нулевой» объект в ответе json.Я задал вопрос как настроить spring mvc 3, чтобы он не возвращал "нулевой" объект в ответе json? .И я получил предложение настроить ObjectMapper, установив включение сериализации в JsonSerialize.Inclusion.NON_NULL.Поэтому, основываясь на Spring configure @ResponseBody JSON формате , я внес следующие изменения в конфигурационный файл Spring.Но я получил сообщение об ошибке «Отклоненное имя bean-компонента« jacksonObjectMapper »: URL-адреса не определены org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping: 86-AbstractDetectingUrlHandlerMapping.java» во время запуска приложения.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <!-- Configures the @Controller programming model -->
    <mvc:annotation-driven />

    <!-- Forwards requests to the "/" resource to the "welcome" view -->
    <!--<mvc:view-controller path="/" view-name="welcome"/>-->

    <!-- Configures Handler Interceptors -->    
    <mvc:interceptors>
        <!-- Changes the locale when a 'locale' request parameter is sent; e.g. /?locale=de -->
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
    </mvc:interceptors>

   <!-- Saves a locale change using a cookie -->
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />


    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                    <property name="objectMapper" ref="jacksonObjectMapper" />
                </bean>
            </list>
        </property>
    </bean>

    <bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper" />
    <bean id="jacksonSerializationConfig" class="org.codehaus.jackson.map.SerializationConfig"
    factory-bean="jacksonObjectMapper" factory-method="getSerializationConfig" />
    <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetObject" ref="jacksonSerializationConfig" />
        <property name="targetMethod" value="setSerializationInclusion" />
        <property name="arguments">
            <list>
                <value type="org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion">NON_DEFAULT</value>
            </list>
        </property>
    </bean>


  <!-- Resolves view names to protected .jsp resources within the /WEB-INF/views directory -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

Понятия не имею, почему он был отклонен.Любое предложение с благодарностью!

1 Ответ

7 голосов
/ 29 июня 2011

<mvc:annotation-driven /> и AnnotationMethodHandlerAdapter нельзя использовать вместе.(ссылка: весенняя ветка форума ).Возможное решение

  1. не использовать <mvc:annotation-driven/>.Объявление bean-компонента: DefaultAnnotationHandlerMapping и AnnotationMethodHandlerAdapter и другие параметры, такие как проверка, форматирование.

  2. использовать пружину 3.1, которая имеет <mvc:message-converters> (ref: Spring jira )

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