配置jacksonObjectMapper在Spring MVC 3中不起作用

我的目标是将spring mvc 3配置为在json响应中不返回“ null”对象。我问过一个问题,如何配置SpringMVC3在JSON响应中不返回“空”对象?。我得到的建议是配置ObjectMapper,将序列化包含设置为JsonSerialize.Inclusion.NON_NULL。因此,基于Spring

configure @ResponseBodyJSON格式,我在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>

我不知道为什么它被拒绝了。任何建议,不胜感激!

回答:

<mvc:annotation-driven

/>并且AnnotationMethodHandlerAdapter不能一起使用。(参考:spring论坛主题)。可能的解决方案

  1. 不要使用<mvc:annotation-driven/>。声明bean:DefaultAnnotationHandlerMappingAnnotationMethodHandlerAdapter其他设置,如验证,格式化。

  2. 使用spring 3.1,它具有<mvc:message-converters>(ref:Spring jira)

以上是 配置jacksonObjectMapper在Spring MVC 3中不起作用 的全部内容, 来源链接: utcz.com/qa/408085.html

回到顶部