2014-01-16 34 views
1

我可以爲存在於多個包中的類編寫轉換器嗎?例如,我有com.package.a.1,com.package.a.2等中存在的ClassA。ClassB存在於com.package.b.1,com.package.b.2等中。每個ClassA和ClassB具有相同的定義。Dozer多個包中的通用映射(通配符?)

我已經試過這樣的事情,但沒有成功

<converter type="com.package.MyConverter"> 
    <class-a>com.package.a.*.ClassA</class-a> 
    <class-b>com.package.b.*.ClassB</class-b> 
</converter> 

回答

1

我不認爲你可以。如果你從代碼的角度考慮它,它會如何知道將課程轉化爲什麼對象?但是,您可以重新使用轉換器。例如

<converter type="com.package.MyConverter"> 
    <class-a>com.package.a.p1.ClassA</class-a> 
    <class-b>com.package.b.p1.ClassB</class-b> 
</converter> 
<converter type="com.package.MyConverter"> 
    <class-a>com.package.a.p2.ClassA</class-a> 
    <class-b>com.package.b.p2.ClassB</class-b> 
</converter> 

唯一的其他可能性,我能想到的是,如果屬性都具有相同的名稱,你不需要指定轉換器,或在映射一一列舉了,推土機只是自動轉換一切具有相同的名稱。

(我可能是錯了我說的話,但是這是我在我的經驗,推土機另案處理)

0

你可以使用一個接口要通過映射所有類您的自定義com.package.MyConverter映射器。所以你只需要定義一次映射:

<converter type="com.package.MyConverter"> 
    <class-a>com.package.IMyConverterMappable</class-a> 
    <class-b>com.package.IMyConverterMappable</class-b> 
</converter>