【问题标题】:referencing another field in a dozer custom field converter在推土机自定义字段转换器中引用另一个字段
【发布时间】:2012-03-26 09:09:59
【问题描述】:

我有 2 个具有这种结构的类:

class ClassA {
  String typeA;
  List<String> valuesA;
  ... other fields go here
}

class ClassB {
  String typeB;
  List<String> valuesB;
  ... other fields go here
}

我需要将 valuesA 映射到 valuesB,并且在此字段映射的自定义转换程序中,我需要访问 typeA/typeB。

类似于:如果 typeA 是“type1”,则通过某种算法将 valuesA 映射到 valuesB,如果 typeA 是“type2”,则通过不同的算法将 valuesA 映射到 valuesB。

Dozer 可以做到这一点吗?

谢谢!

【问题讨论】:

    标签: dozer


    【解决方案1】:

    我认为使用 Dozer 的程序化(即 Java)自定义转换器是可能的。

    请参阅documentation,尤其是 TestCustomConverter Java 类的示例。

    【讨论】:

    • 感谢您的回复!但是,我不确定该怎么做,因为这意味着为整个 classA、classB 映射编写一个自定义转换器。我将能够映射该字段,但这将覆盖其他字段的默认推土机映射器。所以我不知道如何从这个自定义转换器调用基础推土机转换器来映射其他字段。
    • 我认为您不能混合使用自定义转换器和 XML 转换器,因为在 Dozer 配置中,您必须为特定类注册一个映射器。也许你可以通过一些继承来解决这个问题?
    • 谢谢,但我无法更改这些类的结构 - 它们是从我不能更改的特定模式生成的。
    • 所以,对我来说,你必须编写一个完整的自定义转换器:(
    • 但是,这是否意味着无法使用 Dozer 更简单地解决它?请注意,我在 Spring 容器中运行,我可以在自定义转换器中注入 Dozer 映射器,并在应用算法之前使用它生成默认映射。但是,我认为这可能会陷入无限循环。有没有其他方法可以解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 2018-03-11
    • 2023-01-01
    相关资源
    最近更新 更多