猿问

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

我正在尝试将一个字符串转换为一个日期,但转换器似乎没有被触发,我得到一个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词。


我错过了什么?


谢谢。


婷婷同学_
浏览 119回答 1
1回答

函数式编程

好吧,出于某种原因,我愚蠢的 IDE (IntelliJ) 建议我更改上面的代码以解决问题。这就是使它不起作用的原因,似乎将其作为 lambda。使用此代码,它可以完美运行:&nbsp; &nbsp; &nbsp; &nbsp;Converter<String, Date> dateConverter = new Converter<String, Date>()&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public Date convert(MappingContext<String, Date> context)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Date date = null;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; date = new SimpleDateFormat("dd/MM/yyyy").parse(context.getSource());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (ParseException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(e.toString());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return date;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; };
随时随地看视频慕课网APP

相关分类

Java
我要回答