1

最近我们面临自动生成映射代码的需求。

在分析了所有的bean映射框架之后,我们选择了Dozer框架(它的xml映射处理器真的很强大)。

但现在有一个问题。我们只需要在列表末尾添加一个元素(客户端)。但我真的不知道该怎么做。

public class Client {
  private String name;
  private Integer age;

  // constructor, getters and setters
} 

public class OrganizationSource{
  private Client client;

  // constructor, getter and setter
}  

public class OrganizationDest {
  private List<Client> clients;

  // getter
}

Dozer's doc 中的所有示例仅说明按索引设置列表中的元素,当您不知道最后一个索引时,这不是合适的解决方案。

<field>
  <a>client</a>
  <b>clients[0]</b>
  <b-hint>Client</b-hint> // that works! it creates new element in list
</field>

我试图为列表声明自定义设置方法(如何在文档中提到)

<field type="one-way">         
  <a>integerStr</a>
  <b set-method="addIntegerToList">integerList</b>
</field>   

但是要将元素放入列表中,我需要调用两种方法(首先是get,然后是add),例如:

Client source = new Client("Source", 0);

Organization org = new Organization();
List<Client> clients = org.getClients();
clients.add(source)

我试图以这样的方式声明 set 方法:

<field type="one-way>
  <a>client</a>
  <b set-method="getClients().add(java.lang.Object)"</b>
</field

但它不起作用。

我想知道 - 有没有办法在没有自定义转换器的情况下做到这一点?如果是的话 - 如何?

4

0 回答 0