2014-09-05 70 views
2

我需要將classA字段映射到classB字段以及本地化,即ClassA字段值在映射到classB字段之前需要轉換爲本地化值。區域設置應作爲參數傳遞給映射器以獲取本地化值。是否有任何選項將運行時參數與Source和Target類一起傳遞給映射器? 謝謝。帶自定義參數的推土機映射

回答

3

是的,你可以做到這一點。讓我們從推土機docs

BeanMappingBuilder builder = new BeanMappingBuilder() { 
     protected void configure() { 
     mapping(Bean.class, Bean.class, 
       TypeMappingOptions.oneWay(), 
       mapId("A"), 
       mapNull(true) 
     ) 
       .exclude("excluded") 
       .fields("src", "dest", 
         copyByReference(), 
         collectionStrategy(true, 
          RelationshipType.NON_CUMULATIVE), 
         hintA(String.class), 
         hintB(Integer.class), 
         FieldsMappingOptions.oneWay(), 
         useMapId("A"), 
         customConverterId("id") 
       ) 
       .fields("src", "dest", 
        customConverter("org.dozer.CustomConverter") 
       ); 
     } 
    }; 

這個例子在這裏我們可以找到動態配置定義的例子。看看這部分

customConverter("org.dozer.CustomConverter") 

在這裏,您可以使用此方法

FieldsMappingOption customConverter(final String type) 

自定義一個轉換器,但它還有另一個版本

customConverter(final Class<? extends CustomConverter> type, final String parameter) 

這就是你的情況。您可以在動態代碼庫的配置寫水木清華像

customConverter(com.yourproject.TranslatorConverter.class, "en") 

爲您轉換器定義的參數。如何編寫應用參數的CustumConverter的實現 - 看一看here