我的自定义转换器没有被触发

时间:2013-04-02 23:24:26

标签: spring spring-mvc

我正在尝试为转换Set of Object引入自定义转换器 - >宾语。在我的Web层中,我将使用域对象键分隔逗号(',')。

例如

如果DB记录如下表所示

id姓名

1 a

2 b

我有该表的关联域对象。从Web层我得到1,2个字符串,它作为我的域对象的数组绑定到我的DTO。

在这种情况下,我看到默认的Spring转换器字符串到对象数组优先于我的自定义转换器,并导致我的域对象数组使用空域对象创建。

但是,我希望执行转换器,根据来自DB的ID获取域对象。

如何强制我的转换器首先执行到Spring默认转换器。

PS:我将转换目标对象设置为Object而不是我的Domain对象,因为我希望它是通用的,并且应该适用于我的所有域对象。

我没有使用mvc:annotation-driven,我们已经根据需要手动扩展了它。


<context:component-scan base-package="com.shivaji" use-default-filters="false">
    <context:include-filter expression="org.springframework.stereotype.Controller" type="annotation" />
  </context:component-scan>

  <bean class="com.shivaji.mvc.request.shivajiRequestMappingHandlerAdapter">
    <property name="webBindingInitializer">
      <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
        <property name="conversionService" ref="applicationConversionService" />
        <property name="validator" ref="validator" />
      </bean>
    </property>
    <property name="messageConverters">
      <list>
        <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
        <bean class="org.springframework.http.converter.StringHttpMessageConverter" />
        <bean class="org.springframework.http.converter.FormHttpMessageConverter" />
        <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
      </list>
    </property>
  </bean>

  <bean id="conversionServiceExposingInterceptor" class="org.springframework.web.servlet.handler.ConversionServiceExposingInterceptor">
    <constructor-arg ref="applicationConversionService" />
  </bean>

  <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean" id="applicationConversionService">
    <property name="converters">
      <set>
        <bean class="com.shivaji.converter.DateToStringConverter">
          <property name="pattern" value="dd-MM-yyyy HH:mm:ss.SSSSSS" />
        </bean>
      </set>
    </property>
  </bean>

  <!-- Support auto conversion -->
  <bean class="com.shivaji.converter.auto.AutoEntityToIdConverterBeanFactory" />
  <bean class="com.shivaji.converter.auto.AutoIdToEntityConverterBeanFactory" />

  <bean class="org.springframework.mapping.support.ConversionMapperFactory" id="conversionMapperFactory" autowire="byType" />

0 个答案:

没有答案