我正在尝试映射两个 JavaBean 结构(此处简化):
package foo;
public class Container {
private List<Item> items;
public List<Item> getItems() { return items; }
public void setItems(List<Item> items) { this.items = items; }
}
public class Item {
private String message;
public String getMessage() { return message; }
public void setMessage(String message) { this.message = message; }
}
此外,我在包中有相同属性的相同 Bean,bar
并在两者之间进行映射,例如
ModelMapper mapper = new ModelMapper();
bar.Container barContainer = mapper.map(fooContainer, bar.Container.class);
其中源fooContainer
包含一个项目列表,其中一些将属性message
设置为 a String
,其中一些具有null
作为属性值。
在映射结果中,我发现列表foo.Item
似乎已正确映射到第一个属性的列表bar.Item
也正确映射。message
但是,在具有属性值的第一项之后null
,无论源属性的内容如何,后续项的message
所有属性值都将映射到。message
null
通过调试,我发现了原因:一旦目标属性值是null
消息属性路径,在 MappingEngineImpl:207 中被标记为阴影,然后在 MappingEngineImpl:142 中的后续项目中被忽略。
这是 moddelmapper 的错误还是我必须以另一种方式配置 modelmapper 才能启用 bean 属性列表的映射?