0

我在 spring 中注册了一个自定义 MessageConverter,配置如下:

<bean id="jsonHttpMessageConverter" class="com.eventwiz.web.util.ServiceResponseHttpMessageConverter">
    <property name="supportedMediaTypes" value="application/json"/>
</bean>

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
      <util:list id="beanList">
        <ref bean="jsonHttpMessageConverter"/>
      </util:list>
    </property>
</bean>

但是,它没有被调用,因为我在代码中使用断点确认了这一点。ServiceResponseHttpMessageConverter 子类 MappingJacksonHttpMessageConverter 并覆盖 writeInternal() 方法。我什至尝试覆盖 MessageConverter.supports() 只是为了查看是否正在调用它,而事实并非如此。有什么想法吗?

4

1 回答 1

1

根据作者的回答发现的问题是 <mvc:annotation-driven/>注册自己的handlerAdapter的标签,所以如果另一个handlerAdapter被添加到Spring MVC配置文件中并且转换器被添加到这个适配器中,自定义适配器将不会生效。修复方法是通过<mvc:message-converters...标签下的 httpMessageConverters 注册,<mvc:annotation-driven或者删除<mvc:annotation-driven自定义 handleradapter 并在其下注册 httpmessageconverter。

于 2012-09-25T18:30:18.187 回答