在Dozer中映射常量值

时间:2012-08-08 19:47:32

标签: dozer

我想在使用Dozer映射两个类时映射Java类中的常量,如下面第2个字段所示的示例映射中所示。       除了Factory 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> 

1 个答案:

答案 0 :(得分:2)

我过去也需要这个,但没有成功,Dozer不支持在与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