映射Bean是否与模型映射器支持的bean属性列表?

时间:2012-06-14 13:10:58

标签: java modelmapper

我正在尝试映射两个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; }
}

此外,我在包bar中具有相同属性的相同Bean,并在两者之间进行映射

ModelMapper mapper = new ModelMapper();
bar.Container barContainer = mapper.map(fooContainer, bar.Container.class);

fooContainer包含项目列表,其中一些项目的属性message设置为String,其中一些项目的属性值为null。< / p>

在映射结果中,我发现foo.Item列表似乎已正确映射到bar.Item列表,同时正确映射了第一个message属性。但是,在null属性的message值的第一个项之后,无论源属性的内容如何,​​以下项的所有message属性值都将映射到null

通过调试我发现了原因: 目标属性值为null后,消息属性路径在MappingEngineImpl:207中标记为阴影,然后对MappingEngineImpl中的后续项目进行忽略:142。

这是moddelmapper的错误还是我必须以另一种方式配置modelmapper以启用bean属性列表的映射?

1 个答案:

答案 0 :(得分:2)

绝对看起来像是一个错误。我实际上在使用ModelMapper时遇到了同样的问题,这就是我发现这个问题的方法。

由于使用相同的上下文来映射其他对象,因此着色为null的路径似乎很危险。我已经取消了这个功能,它似乎按预期工作。

我在ModelMapper页面上围绕此错误创建了一个问题: http://code.google.com/p/modelmapper/issues/detail?id=19

另外,我修复了问题并将其发布到GitHub。我已经发出拉取请求,希望它将被合并到下一版本的ModelMapper中: https://github.com/chrisdail/modelmapper