3

当使用 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> 
4

1 回答 1

2

我过去也需要这个,但没有成功,Dozer 不支持映射到与class-aor中定义的类不同的类中的常量值class-b。如果您要在class-aor的类中定义常量,则只需在常量字段中进行class-b单向映射和使用。is-accessible="true"

作为一个丑陋的解决方法,您可以创建另一个mapping元素来执行从常量类到目标对象的单向映射,但是您必须向 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>

推土机论坛上的相关主题

于 2012-08-09T19:14:34.193 回答