Spring MVC привязка данных - PullRequest
       9

Spring MVC привязка данных

1 голос
/ 07 сентября 2011

У меня есть очень странная ошибка, которую мне удалось исправить, но я не могу понять, почему она появилась сначала.

У меня было приложение Spring MVC со многими различными классами, которые были созданы в SpringRoo, например: AuthenticationConfig, ConnectorConfig и т. Д. После создания лесов я перенес весь код из AJ в Java, и все работало нормально, и я изменил его в соответствии со своими потребностями.

Но однажды я решил провести рефакторинг некоторых из этих классов (потому что у них было много общего), и привязки разорвались.

Я начал получать ошибки привязки:

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

После того, как я зарегистрировал преобразователь String в GeneralConfig в FormattingConversionServiceFactoryBean, ошибка исчезла (у нее уже был преобразователь GeneralConfig в String), но я не понимаю, почему раньше все работало нормально.Все, что я делал, удаляло ненужные классы конфигурации и заменял их одним общим классом, например:

@ManyToOne
private ConnectorConfig connector;

@ManyToOne
private XUIDMapperConfig xuidMapper;

@ManyToOne
private AuthenticationTokenConfig authenticationToken;

To

@ManyToOne
private GeneralConfig connector;

@ManyToOne
private GeneralConfig xuidMapper;

@ManyToOne
private GeneralConfig authenticationToken;

Может быть, я упустил что-то важное во время рефакторинга?

1 Ответ

1 голос
/ 17 мая 2013

Проверьте 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());
    ...
}
...