2012-08-08 71 views
3

我想在使用Dozer映射两个类时映射Java类中的常量,如下面的字段2所示的示例映射中所示。 有没有一种更简洁的方法,以远离工厂bean实例为此在推土机..在Dozer中映射常量值

 <mapping> 
    <class-a>com.mod.Class1</class-a> 
    <class-b>com.mod.Class2</class-b> 
    <field> 
     <a>field1inClass1</a> 
     <b>field1inClass2</b> 
    </field> 
    <field>  <!-- This is from constants. --> 
     <a>constants.Field</a> 
     <b>field2inClass2</b> 
    </field> 
    </mapping> 

回答

2

我在过去这需要太多,但没有成功,推土机不支持映射到一个恒定值一类不同于在class-aclass-b中定义的那些。如果您想要在class-aclass-b的课程中定义常量,则只需执行单向映射,并在常量字段中使用is-accessible="true"

作为一个丑陋的解决方法,您可以创建另一个mapping元素来将您的Constants类映射到您的目标对象,但是您必须将常量类的实例传递给Dozer(我知道这很糟糕),并且这是唯一可能的,如果你的Constants类是可实例化的(这是最糟糕的)。

<mapping> 
    <class-a>ConstantsClass</class-a> 
    <class-b>InstantiableClass</class-b>   
    <field type="one-way">   
     <a is-accessible="true">THE_CONSTANT</a> 
     <b>value</b> 
    </field>   
</mapping> 

Related topic on Dozer forums