2013-03-26 2 views
0

오류가 발생하여 디버깅 할 위치를 알 수 없습니다.봄 + 사용자 지정 변환기 + 몽고

ConverterNotFoundException : 없음 컨버터 유형 @ javax.validation.constraints.NotNull java.util.HashMap에 < @ javax.validation.constraints.NotNull java.lang.String의, @ javax.validation.constraints에서 변환 할 찾을 수 없습니다. NOTNULL java.util.Date> 내 애플리케이션 컨텍스트 설정

java.lang.String의를 입력 :

<mongo:mapping-converter id="mongoConverter" base-package="com.app"> 
    <mongo:custom-converters> 
     <mongo:converter> 
      <bean class="com.app.util.converter.HashMapToStringConverter" /> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="com.app.util.converter.StringToHashMapConverter" /> 
     </mongo:converter> 
    </mongo:custom-converters> 
</mongo:mapping-converter> 


<bean class="org.springframework.data.mongodb.core.MongoTemplate" id="mongoTemplate"> 
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/> 
    <constructor-arg name="mongoConverter" ref="mongoConverter"/> 
</bean> 

내 컨버터 한 것은 :

public class HashMapToStringConverter implements Converter<HashMap<String,Date>, String>{ 
    @Override 
    public String convert(HashMap<String,Date> map) {  
     if(map==null){ 
      throw new ConversionFailedException(TypeDescriptor.valueOf(HashMap.class), 
        TypeDescriptor.valueOf(String.class), map, null);   
     }  
     StringBuilder sb = new StringBuilder(); 
     boolean first = true; 
     for(Map.Entry<String, ?> e: map.entrySet()){    
      if(!first){ 
       sb.append(","); 
       first=!first; 
      }    
      sb.append(e.getKey()); 
      sb.append("::"); 
      sb.append(e.getValue());   
     }  
     return sb.toString(); 
    } 
} 

답변

0

나는 완전히 다른 상황에서 비슷한 문제가 발생했습니다. DefaultConversionService에 대한 사용자 정의 데코레이터가 있습니다.

내가 한 것은 addConverter 메서드를 호출하고 사용자 지정 변환기를 추가 한 것입니다.

내가 좋아하는 뭔가를했다 :

public class MyConverter<Class1, Class2> {...} 

을 그리고 또 다른 코드에서 나는했다 :

DefaultConversionService cs = new MyDecoratorConversionService(new DefaultConversionService()); 

cs.addConverter(new MyConverter()); 
관련 문제