未触发ModelMapper中的自定义转换器

时间:2019-05-28 07:16:28

标签: java spring spring-boot modelmapper

我正在尝试将String转换为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字。

我想念什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

好的,出于某种原因,我的笨拙的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;
            }
        };