2012-03-11 43 views
2

在我的應用我有推土機的映射,看起來像這樣:如何將`this`傳遞給Dozer字段映射?

<mapping> 
    <class-a>java.util.HashMap</class-a> 
    <class-b>org.mycompany.TargetClass</class-b> 
    <field custom-converter="org.example.MyConverter"> 
     <a>this</a> 
     <b>anotherField</b> 
    </field> 
</mapping> 

MyConverterConfigurableCustomConverter一個實例:

public class MyConverter implements ConfigurableCustomConverter { 

    private String parameter; 

    @Override 
    public Object convert(
      Object existingDestinationFieldValue, 
      Object sourceFieldValue, 
      Class<?> destinationClass, 
      Class<?> sourceClass) { 
     // sourceClass is always java.lang.Object and 
     // sourceFieldValue is always null!!! 
    } 

    @Override 
    public void setParameter(String parameter) { 
     this.parameter = parameter; 
    } 
} 

爲什麼事情指出,在源評論發生的呢?

回答

3

你需要告訴推土機該地圖的關鍵應該被映射到b.anotherField,喜歡的東西

<field custom-converter="org.example.MyConverter"> 
    <a key="foobar">this</a> 
    <b>anotherField</b> 
</field> 

http://dozer.sourceforge.net/documentation/mapbackedproperty.html#Mapping_Class_Level_Properties_to_a_java.util.Map_or_a_Custom_Map_with_unique_GetSet_methods

+3

但是,有沒有辦法通過映射對象(或地圖)本身,而不是一個獨特的領域? – 2012-03-12 06:26:48

+0

「這個」是天賜之物。謝謝 – 2016-03-03 11:37:03