我有一个非常奇怪的错误,我设法修复,但我不明白为什么它出现在第一位。
我有一个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;
也许我在重构过程中错过了一些重要的东西?
答案 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());
...
}