2

具体来说,我想将我的 Source 类 ( PurchaseOrderFilterViewModel) 中的 String 转换为org.joda.time.LocalDate我的 Destination 类 ( PurchaseOrderFilter) 中的一个。

我尝试PropertyMap<Source, Destination>按照文档使用,但它不起作用。当 null 作为构造函数参数传入时,Destination 类中的日期总是分配给当前日期,这是默认的 LocalDate。

    PurchaseOrderFilterViewModel purchaseOrderFilterViewModel1 = new PurchaseOrderFilterViewModel();
    purchaseOrderFilterViewModel.setStartReceiptDate("2015-04-15");
    purchaseOrderFilterViewModel.setEndReceiptDate("2015-04-17");

    ModelMapper modelMapper = new ModelMapper();

    modelMapper.createTypeMap(PurchaseOrderFilterViewModel.class, PurchaseOrderFilter.class);
    modelMapper.addMappings(new PropertyMap<PurchaseOrderFilterViewModel, PurchaseOrderFilter>()
    {
        @Override
        protected void configure()
        {
            map().setStartReceiptDate(new LocalDate(source.getStartReceiptDate()));
            map().setEndReceiptDate(new LocalDate(source.getEndReceiptDate()));
        }
    });

    PurchaseOrderFilter purchaseOrderFilter = modelMapper.map(purchaseOrderFilterViewModel, PurchaseOrderFilter.class);
4

1 回答 1

1

请注意,在配置中,您使用 DSL 来定义映射。这不是模型映射器进行映射时运行的代码。

换句话说,您的配置现在指示映射setStart/EndReceptionDatenew LocalDate(null),因为在您定义配置时source.getStart/EndReceiptDate()返回。null

您应该使用Converter

于 2016-05-19T11:58:03.713 回答