簡體   English   中英

不要在推土機中將空列表從一個列表映射到另一個列表

[英]Don't Map null entries from one list to another in Dozer

假設我具有以下類結構?

class A{
List<B> listB;
//getter and setter
}
class B{
String s;
//getter and setter
}
//objectOfA has listB = [null,objectOfB,null]
A a2 = dozermapper.map(objectOfA,A.class);

我希望a2僅包含listB = [objectOfB]。 列表的null元素。

如何在推土機中做到這一點?

您可以編寫一個簡單的轉換器,像這樣(使用新的轉換器api,也可以使用舊的轉換器):

public class Converter extends DozerConverter<List<B>, List<B>> {
  public Converter() {
    super(List.class, List.class);
  }

  public List<B> convertTo(List<B> source, List<B> destination) {
    List<B> result = new ArrayList<B>();
    for (B item : source) {
      if (item != null) {
          result.add(item); //or item copy, or whatever you want
      }
    }
    return result;
  }
} 

然后將其附加到您的映射中,如下所示:

<mapping>
  <class-a>yourpackage.A</class-a>
  <class-b>yourpackage.A</class-b>    
  <field custom-converter="yourpackage.Converter">
      <a>listB</a>
      <b>listB</b>
  </field>
</mapping> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM