Предположим, что у меня есть следующие классы
public class Baz {
private List<Foo> foos = new ArrayList<Foo>();
}
public class Foo {
private String string;
}
public class Target {
private List<String> fooStrings = new ArrayList<String>();
}
Там кто-либо отображается, я могу использовать для, учитывая Baz, отобразить его на целевой класс и получить список строк, содержавшихся в нечто в Baz? Следующее отображение не работает
<mapping>
<class-a>Baz</class-a>
<class-b>Target</class-b>
<field>
<a>foos.string</a>
<b>fooStrings</b>
</field>
</mapping>
Поскольку строка не является свойством foos (который имеет список типов). Я думал бы, что Dozer был бы достаточно умен к, если бы он встретился с набором в глубоком отображении, и цель была также набором, чтобы смочь повредить глубокое имя свойства в два и выполнить итерации через набор для получения дочерней части глубокого отображения от участников набора. По-видимому, нет. Существует ли решение за исключением создания запроса новых функций Dozer?
Вы всегда можете написать свой собственный CustomConverter .
Логично, почему Dozer не может справиться с этим так, как вы ожидаете, поскольку во время выполнения он не имеет информации о типе List foos
и не может гарантировать, что каждый объект
в списке на самом деле есть Foo
.