2012-08-02 78 views
1

如何配置Dozer,使其仅将bean a中的一个字段的值复制到bean b中的字段,如果bean b中的字段为空?我正在使用dsl config如果接收Bean映射字段为空,则Dozer仅复制

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 

回答

2

为此字段转换写一个自定义转换器。自定义转换器应该检查bean b中的字段是否为空,并且如果它是复制字段a

从推土机文档:

在下面的例子,推土机将调用定制转换器来执行场映射。

<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) {... 
相关问题