2011-09-07 3 views
1

해결할 수있는 매우 이상한 오류가 있습니다. 그러나 왜 처음에 나타나는지 이해할 수 없습니다.스프링 MVC 데이터 바인딩

나는 Spring Roo에 의해 스캐 폴딩 된 많은 다른 클래스를 가진 Spring MVC 애플리케이션을 가지고있다 : AuthenticationConfig, ConnectorConfig etc. 스카 폴딩 후, AJ에서 java로 모든 코드를 밀어 넣고 잘 작동했다. 내 필요.

그러나 언젠가 나는이 클래스 중 일부를 리팩터링하기로 결정했는데 (공통점이 많았 기 때문에) 바인딩이 깨졌습니다. FormattingConversionServiceFactoryBean 오류가 (이미 문자열 변환에 GeneralConfig했다) 사라졌다에 내가 GeneralConfig 계산기에 문자열을 등록 후

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

하지만, 모든 전에 괜찮 았는데 왜 이해가 안 :

나는 바인딩 오류가 발생하기 시작 . 어쩌면 내가 리팩토링 중 중요한 것을 놓친

@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

서버를 시작한 후 팝업 이러한 오류

그 문제를 직면하고 다른 사람을 위해, 먼저 아래의 요건을 충족하는지 확인? 이 오류를 일으킬 수있는 이전 데이터를 데이터베이스에서 확인하십시오. 그렇다면 데이터베이스에서 삭제하고 다시 시도하십시오. :) – bhagyas

답변

1

ApplicationConversionServiceFacotryBean을 확인하십시오.

Roo가 인라인해야하는 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()); 
    ... 
}