Modelmapper to convert from String to LocalDate

雨燕双飞 提交于 2019-12-05 09:14:56

If you want to convert to LocalDate you need to create a Provider otherwise ModelMappercannot instantiate LocalDate because it doesn't have a public default constructor.

Use this configuration and it will work:

 ModelMapper modelmapper = new ModelMapper();

    Provider<LocalDate> localDateProvider = new AbstractProvider<LocalDate>() {
        @Override
        public LocalDate get() {
            return LocalDate.now();
        }
    };

    Converter<String, LocalDate> toStringDate = new AbstractConverter<String, LocalDate>() {
        @Override
        protected LocalDate convert(String source) {
            DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDate localDate = LocalDate.parse(source, format);
            return localDate;
        }
    };


    modelmapper.createTypeMap(String.class, LocalDate.class);
    modelmapper.addConverter(toStringDate);
    modelmapper.getTypeMap(String.class, LocalDate.class).setProvider(localDateProvider);

Test output:

 String dateTest = "2000-09-27";
 LocalDate dateConverted = modelmapper.map(dateTest, LocalDate.class);

 System.out.println(dateConverted.toString()); //Output = 2000-09-27
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!