Spring 弹簧&x2B;自定义转换器+;数据
我得到了错误,不知道在哪里调试 ConverterNotFoundException:未找到能够从@javax.validation.constraints.NotNull java.util.HashMap类型转换为java.lang.String类型的转换器 我已设置我的应用程序上下文:Spring 弹簧&x2B;自定义转换器+;数据,spring,mongodb,converter,Spring,Mongodb,Converter,我得到了错误,不知道在哪里调试 ConverterNotFoundException:未找到能够从@javax.validation.constraints.NotNull java.util.HashMap类型转换为java.lang.String类型的转换器 我已设置我的应用程序上下文: <mongo:mapping-converter id="mongoConverter" base-package="com.app"> <mongo:custom-convert
<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();
}
}
公共类HashMapToStringConverter实现转换器{
@凌驾
公共字符串转换(哈希映射){
if(map==null){
抛出新的ConversionFailedException(TypeDescriptor.valueOf(HashMap.class)),
TypeDescriptor.valueOf(String.class),map,null);
}
StringBuilder sb=新的StringBuilder();
布尔值优先=真;
对于(Map.Entry e:Map.entrySet()){
如果(!first){
某人加上(“,”);
第一个=!第一个;
}
sb.append(如getKey());
某人附加(“::”);
sb.append(如getValue());
}
使某人返回字符串();
}
}
我也有类似的问题,但情况完全不同。我为DefaultConversionService定制了一个decorator
我所做的是调用addConverter方法并添加自定义转换器
我有点像:
public class MyConverter<Class1, Class2> {...}
DefaultConversionService cs = new MyDecoratorConversionService(new DefaultConversionService());
cs.addConverter(new MyConverter());