2012-08-02 75 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) {... 
相關問題