2

我正在使用 Dozer,它正在将来自 WebService 的 JAXB 对象映射到驻留在应用程序服务层中的业务对象。在某些特定情况下,我需要将字符串值中的代码映射到字符串值中的人类可读描述。示例:“FLT”映射到“FLAT”,“TRP”映射到“TRAP”。我有很多这样的类型映射。

我正在通过继承DozerConverter并实现两个抽象方法 convertTo () 和convertFrom () 来实现一个自定义的 Dozer Converter。在这些中,我想分别将“FLT”映射到“FLAT”和“FLAT”到“FLT”,但不幸的是,Dozer 没有正确调用正确的convertTo () 或convertFrom () 方法。

还有其他人有这个问题并且可以指出我正确的方向吗?谢谢

4

2 回答 2

2

如果您可以控制 POJO,则可以将这些字符串视为枚举。您必须为 web 服务端和业务逻辑端定义枚举,但我认为这是一个比使用转换器或 xmladapter 更优雅的解决方案。

枚举示例:

public enum ENUM_WS {
  @XmlEnumValue("TRP") TRAP,
  @XmlEnumValue("FLT") FLAT
}

public enum ENUM_BL {
  @XmlEnumValue("TRAP") TRAP,
  @XmlEnumValue("FLAT") FLAT
}
于 2011-11-23T12:58:14.220 回答
0

您可以在 JAXB 级别解决此问题。为此,您可以利用XmlAdapter将 XML 字符串(即 FLT)转换为对象字符串(即 FLAT)的方法。

如果您从 XML 模式生成对象模型,则以下内容可能会有所帮助:

于 2011-10-28T18:08:42.963 回答