如果接收bean映射字段为空,则仅对Dozer进行复制

时间:2012-08-02 18:29:49

标签: java javabeans dozer

如果bean b中的字段为空,我如何配置Dozer以便它只将值从bean a中的一个字段复制到bean b中的字段?我正在使用dsl config

mapping(FirstGivingPayloadV1.Payload.class, Nonprofit.class, oneWay(),
        mapNull(false), mapId("firstGivingPayloadV1"))
        .fields("latitude", "latitude")
        .fields("longitude", "longitude")
        .fields("revoked", "isNonProfitStatusVerified");
        .fields("url", "websiteUrl"); // only copy url if webSiteURL == null or is empty

1 个答案:

答案 0 :(得分:2)

为此字段转换编写自定义转换器。自定义转换器应检查bean b中的字段是否为空,以及它是否为复制字段a

来自Dozer文档:

在下面的示例中,Dozer将调用自定义转换器来执行字段映射。

<mapping>
  <class-a>org.dozer.vo.SimpleObj</class-a>
  <class-b>org.dozer.vo.SimpleObjPrime2</class-b>    
  <field custom-converter-id="CustomConverterWithId">
    <a>field1</a>
    <b>field1Prime</b>
  </field>
</mapping>  

在自定义转换器中,您可以访问目标对象,并且可以检查它是否为空,请查看convert方法签名:

public class TestCustomConverter implements CustomConverter {
 public Object convert(Object destination, Object source, Class destClass, Class sourceClass) {...