ModelMapper 中的自定义转换器未被触发
Custom converter in ModelMapper not being fired
我正在尝试将字符串转换为日期,但转换器似乎没有启动,我得到了 MappingException
。这是我的代码:
@Bean
public ModelMapper modelMapper() {
ModelMapper modelMapper = new ModelMapper();
Converter<String, Date> dateConverter = context -> {
Date date;
try {
date = new SimpleDateFormat("dd/MM/yyyy").parse(context.getSource());
} catch (ParseException e) {
date = null;
}
System.out.println("working");
return date;
};
modelMapper.addConverter(dateConverter);
return modelMapper;
}
然后我就这样使用它,但我继续收到同样的错误:
Date date = this.modelMapper.map("20/12/2019", Date.class);
1) Converter org.modelmapper.internal.converter.DateConverter@27c7dc27 failed to convert java.lang.String to java.util.Date.
它甚至没有打印 working
这个词。
我错过了什么?
谢谢。
好吧,出于某种原因,我的笨蛋 IDE (IntelliJ) 建议我更改上面的代码,以了解它在问题中的表现。这就是使它不起作用的原因,似乎将其作为 lambda。使用此代码,它可以完美运行:
Converter<String, Date> dateConverter = new Converter<String, Date>()
{
public Date convert(MappingContext<String, Date> context)
{
Date date = null;
try {
date = new SimpleDateFormat("dd/MM/yyyy").parse(context.getSource());
} catch (ParseException e) {
System.out.println(e.toString());
}
return date;
}
};
我正在尝试将字符串转换为日期,但转换器似乎没有启动,我得到了 MappingException
。这是我的代码:
@Bean
public ModelMapper modelMapper() {
ModelMapper modelMapper = new ModelMapper();
Converter<String, Date> dateConverter = context -> {
Date date;
try {
date = new SimpleDateFormat("dd/MM/yyyy").parse(context.getSource());
} catch (ParseException e) {
date = null;
}
System.out.println("working");
return date;
};
modelMapper.addConverter(dateConverter);
return modelMapper;
}
然后我就这样使用它,但我继续收到同样的错误:
Date date = this.modelMapper.map("20/12/2019", Date.class);
1) Converter org.modelmapper.internal.converter.DateConverter@27c7dc27 failed to convert java.lang.String to java.util.Date.
它甚至没有打印 working
这个词。
我错过了什么?
谢谢。
好吧,出于某种原因,我的笨蛋 IDE (IntelliJ) 建议我更改上面的代码,以了解它在问题中的表现。这就是使它不起作用的原因,似乎将其作为 lambda。使用此代码,它可以完美运行:
Converter<String, Date> dateConverter = new Converter<String, Date>()
{
public Date convert(MappingContext<String, Date> context)
{
Date date = null;
try {
date = new SimpleDateFormat("dd/MM/yyyy").parse(context.getSource());
} catch (ParseException e) {
System.out.println(e.toString());
}
return date;
}
};