我想在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
答案 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(就像我出于某种原因那样......),您现在可以按照需要的方式操作源对象。