java - 不要在 Dozer 中将空条目从一个列表映射到另一个列表

标签 java list mapping 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] 。列表中的元素不为空。

如何在推土机中做到这一点?

最佳答案

你可以编写一个简单的转换器,如下所示(使用新的转换器 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> 

关于java - 不要在 Dozer 中将空条目从一个列表映射到另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12401431/

相关文章:

javascript - 在传单中创建自定义 control.layers 类

java - MapStruct @Mapping(表达式 ="java(...)")

java - AsyncTask 在 doinbackground() 上抛出错误 "Caused by java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.lang.Void[]"

python - 在没有 numpy (python) 的情况下对列表进行元素操作的正确样式

Java - 从源加载图像

c# - ArrayList 与 List<object>

具有过滤功能的Python列表(excel-way)

java - 为什么这个 MapStruct 生成的类不包含 import 语句?

java - Java 中的 if(变量 == [集合中的任何项目])

java - JSP 信息页面调试助手