推土机自定义转换器 - 将整个对象作为字段'A'传递

时间:2013-12-10 12:04:56

标签: java xml-serialization dozer

我想在dozer中映射CustomConverter,但我想将整个当前对象作为源传递。 dozer CustomConverter文档中的所有示例都将输入对象的字段作为源而不是整个对象传递。

我想做这样的事情:

<mapping>
   <class-a>foo.bar.InputObject</class-a>
   <class-b>foo.bar.OutputObject</class-b>    
   <field custom-converter="foo.bar.MyConverter">
      <a>this</a> <!-- how do I access the whole value and not just a field? -->
      <b>custom</b>
   </field>
   <field>
      <a>anotherField</a>
      <b>anotherField</b>
   </field>
</mapping>

public class MyConverter extends DozerConverter<InputObject, String> {
    ...
    public String convertTo(InputObject input, String custom) {
       // do some transformation
    }
}

CustomConverter docs: http://dozer.sourceforge.net/documentation/customconverter.html

2 个答案:

答案 0 :(得分:1)

尝试实现CustomConverter而不是DozerConverter,并尝试将其传递为:

<field custom-converter="my.custom.converter">
    <a>this</a>
    <b>myfield</b>
</field>

答案 1 :(得分:0)

如果您使用字段映射,则需要使用&#34; key&#34;来识别属性:

<field custom-converter="de.xyz.custom.MyConverter">
    <a key="variablename">this</a>
    <b>targetvariablename</b>
</field>

然后,您可以继续实施转换器。您将获得包含字段&#34; variablename&#34;的对象。作为来源。例如,如果您没有列表值的setter(就像我出于某种原因那样......),您现在可以按照需要的方式操作源对象。