Дано:
String SourcePojo.area = "120,5 sqm"
double TargetPojo.area = 120.5
Я могу преобразовать "грязную" строку в число следующим образом:
double extractDoubleFromString(String string) throws ParseException{
NumberFormat format = NumberFormat.getInstance(Locale.GERMAN);
return format.parse(string).doubleValue();
}
Что я пробовал
Используя Mapstruct, я написал этот Mapper:
@Mapper
public interface MyMapper {
MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);
@Mapping(source="space", target="space", qualifiedByName="StringToDouble")
TargetPojo mapSourceToTarget(TargetPojo aAED);
@Named("StringToDouble")
default double extractDoubleFromString(String string) throws ParseException{
NumberFormat format = NumberFormat.getInstance(Locale.GERMAN);
return format.parse(string).doubleValue();
}
}
В сгенерированном MapperImpl я нашел этот код:
if ( aAED.getSpace() != null ) {
targetPojo.space( Double.parseDouble( aAED.getSpace() ) );
}
Похоже, что названный метод вообще не используется. Я все еще получаю ту же ошибку, что и до того, как добавил ее.