我正在使用Dozer,它正在将来自WebService的JAXB对象映射到驻留在应用程序服务层中的业务对象。在某些特定情况下,我需要将String值中的代码映射到String值中的可读描述。 示例:" FLT"映射到" FLAT"和" TRP"映射到" TRAP"。我有很多这些类型的映射。
我通过继承 DozerConverter 并实现两个抽象方法 convertTo ()和 convertFrom ()来实现自定义Dozer转换器。在这些内部我想映射" FLT"到" FLAT"和" FLAT"到" FLT"分别但不可靠的是,Dozer没有正确地调用正确的 convertTo ()或 convertFrom ()方法。
有没有其他人有这个问题,可以指出我正确的方向? 感谢
答案 0 :(得分:2)
如果您可以控制POJO,则可以将这些字符串视为枚举。您必须为Web服务端和业务逻辑端定义枚举,但我认为这比使用转换器或xmladapter更优雅。
枚举示例:
public enum ENUM_WS {
@XmlEnumValue("TRP") TRAP,
@XmlEnumValue("FLT") FLAT
}
public enum ENUM_BL {
@XmlEnumValue("TRAP") TRAP,
@XmlEnumValue("FLAT") FLAT
}
答案 1 :(得分:0)
您可以在JAXB级别解决此问题。为此,您可以利用将XML字符串(即FLT)转换为对象字符串(即FLAT)的XmlAdapter
。
如果要从XML模式生成对象模型,则以下内容可能有所帮助: