我想在使用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>
答案 0 :(得分:2)
我过去也需要这个,但没有成功,Dozer不支持在与class-a
或class-b
中定义的类不同的类中映射到常量值。如果您要在class-a
或class-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>