Spring Roo verwendet in der webmvc-config.xml das Tag <mvc:annotation-driven />. Doch was macht dieses Tag genau? Wie in diesem Blogbeitrag erwähnt, findet sich die Antwort in der Klasse AnnotationDrivenBeanDefinitionParser. Beschrieben ist auch, wie man das Tag durch Bean-Definitionen ersetzen kann, um zum Beispiel eigene Klassen zu verwenden.
Leider hat der Autor die Beans, die für die Conversions zuständig sind, nicht übernommen. Hier ist die korrekte, bzw. erweiterte Definition.
<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="order" value="0" />
</bean>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
<bean id="bindingInitializer" class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="conversionService" ref="conversionService" />
<property name="validator" ref="validator" />
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer" ref="bindingInitializer" />
<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" />
</list>
</property>
</bean>
<bean id="exposingInterceptor" class="org.springframework.web.servlet.handler.ConversionServiceExposingInterceptor">
<constructor-arg><ref bean="conversionService"/></constructor-arg>
</bean>
<bean class="org.springframework.web.servlet.handler.MappedInterceptor">
<constructor-arg><null /></constructor-arg>
<constructor-arg><ref bean="exposingInterceptor"/></constructor-arg>
</bean>
