Spring MVC数据绑定

时间:2011-09-07 16:19:57

标签: java spring spring-mvc spring-roo

我有一个非常奇怪的错误,我设法修复,但我不明白为什么它出现在第一位。

我有一个Spring MVC应用程序,有许多不同的类,由Spring Roo搭建,如:AuthenticationConfig,ConnectorConfig等。在脚手架之后我将所有代码从AJ推送到java并且一切正常,我修改它以适应我的需要。

但是有一天我决定重构其中一些类(因为它们有很多共同点),并且绑定分解了。

我开始收到绑定错误:

Failed to convert property value of type 'java.lang.String' to required type 'com.mypackage.GeneralConfig'.

在FormattingConversionServiceFactoryBean中注册了String到GeneralConfig转换器后,错误消失了(它已经将GeneralConfig转换为String转换器),但我不明白为什么一切正常。我所做的每件事都删除了不必要的配置类,并用一个通用类替换它们,如下所示:

@ManyToOne
private ConnectorConfig connector;

@ManyToOne
private XUIDMapperConfig xuidMapper;

@ManyToOne
private AuthenticationTokenConfig authenticationToken;

@ManyToOne
private GeneralConfig connector;

@ManyToOne
private GeneralConfig xuidMapper;

@ManyToOne
private GeneralConfig authenticationToken;

也许我在重构过程中错过了一些重要的东西?

1 个答案:

答案 0 :(得分:1)

检查ApplicationConversionServiceFacotryBean。

Roo应该在“web”或“controller”包中创建该类,以及应该内联的ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj。也许你在内联时错过了那门课程?

对于面临该问题的其他人,请确保您拥有以下内容:

public Converter<String, GeneralConfig> getStringToGeneralConfigConverter() {
    return new org.springframework.core.convert.converter.Converter<java.lang.String, GeneralConfig>() {
        public GeneralConfig convert(String id) {
            return getObject().convert(getObject().convert(id, Long.class), GeneralConfig.class);
        }
    };
}

并安装了转换器:

public void installLabelConverters(FormatterRegistry registry) {
    ...
    registry.addConverter(getStringToConfigurationConverter());
    ...
}