2011-05-25 3 views
3

У меня есть ListWrapper какБульдозер отображение общих списков

public class ListWrapper<T> { 

private List<T> entries = new ArrayList<T>(); 

public List<T> getEntries() { 
    return entries; 
} 

public void setEntries(List<T> entries) { 
    this.entries = entries; 
} 

и боб, как

public class AccountBo { 
    private String accountName; 

    public String getAccountName() { 
     return accountName; 
    } 

    public void setAccountName(String accountName) { 
     this.accountName = accountName; 
    } 

} 

и другой компонент, как

public class AccountDto { 
    private String accountName; 

    public String getAccountName() { 
     return accountName; 
    } 

    public void setAccountName(String accountName) { 
     this.accountName = accountName; 
    }  
} 

идея в настоящее время является, чтобы заполнить список с beans типа AccountBo и использовать Dozer для отображения списка, а затем заполнить AccountDto Beans.

AccountBo accountA = new AccountBo(); 
    accountA.setAccountName("Person A");   
    AccountBo accountB = new AccountBo(); 
    accountB.setAccountName("Person B"); 

    ListWrapper<AccountBo> listWrapperBo = new ListWrapper(); 

    listWrapperBo.getEntries().add(accountA); 
    listWrapperBo.getEntries().add(accountB); 

    ListWrapper<AccountDto> dtoList = EntityMapper.getInstance().map(listWrapperBo, ListWrapper.class); 

    List<AccountDto> listDto = dtoList.getEntries(); 

Но - Фасоль в целевом списке типа AccountBo ....

Что я могу сделать, чтобы получить список AccountDto-х?

+0

Я думаю, что ответ уже здесь [http://stackoverflow.com/questions/1358595/how-to-map-collections- в-дозатором] [1] [1]: http://stackoverflow.com/questions/1358595/how-to-map-collections-in-dozer – jmpeace

ответ

2

Я бы рекомендовал использовать ModelMapper вместо Dozer для этого.

Самое простое решение заключается в создании подкласса ListWrapper, который включает в AccountDto:

public class DtoListWrapper extends ListWrapper<AccountDto> { 
} 

Затем, когда вы идете на карту, ModelMapper будет знать, что ListWrapper содержащий AccountBOs должен быть преобразован в ListWrapper, содержащей AccountDtos.

ModelMapper modelMapper = new ModelMapper(); 
ListWrapper<AccountDto> listWrapper = modelMapper.map(listWrapperBo, DtoListWrapper.class); 

Это все! Для большего количества примеров и документации, проверить сайт ModelMapper:

http://modelmapper.org

Смежные вопросы