具体来说,我想将Source类(PurchaseOrderFilterViewModel
)中的String转换为Destination类(org.joda.time.LocalDate
)中的PurchaseOrderFilter
。
我尝试按照documentation使用PropertyMap<Source, Destination>
,但它不起作用。 Destination类中的日期始终分配给当前日期,当作为构造函数参数传入null时,该日期是默认的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);
答案 0 :(得分:1)
请注意,在configure中,您使用DSL来定义映射。它不是modelmapper执行映射时运行的代码。
换句话说,您的配置现在指示将setStart/EndReceptionDate
映射为new LocalDate(null)
,因为source.getStart/EndReceiptDate()
在您定义配置时会返回null
。
您应该使用Converter。