Dozer Converter map Строка в строку - PullRequest
2 голосов
/ 28 октября 2011

Я работаю с Dozer, и он сопоставляет наши объекты JAXB, которые поступают из нашего WebService, с бизнес-объектами, которые находятся на уровне обслуживания нашего приложения.В некоторых особых случаях мне нужно отобразить коды в строковых значениях в удобочитаемое описание в строковых значениях.Пример: «FLT» отображается на «FLAT», а «TRP» отображается на «TRAP».У меня много таких сопоставлений типов.

Я реализую пользовательский Dozer Converter, унаследовав DozerConverter и реализовав два абстрактных метода convertTo () и ConvertFrom ().В них я хотел отобразить «FLT» на «FLAT» и «FLAT» на «FLT» соответственно, но, к сожалению, Dozer не вызывает правильные методы convertTo () или convertFrom ()правильно.

Кто-нибудь еще имеет эту проблему и может указать мне правильное направление?Спасибо

Ответы [ 2 ]

2 голосов
/ 23 ноября 2011

Если у вас есть контроль над POJO, вы можете рассматривать эти строки как перечисления. Вам нужно будет определить перечисления для стороны веб-сервиса и стороны бизнес-логики, но я думаю, что это более элегантное решение, чем использование конвертера или xmladapter.

Примеры перечислений:

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

public enum ENUM_BL {
  @XmlEnumValue("TRAP") TRAP,
  @XmlEnumValue("FLAT") FLAT
}
0 голосов
/ 28 октября 2011

Вы можете решить эту проблему на уровне JAXB. Для этого вы можете использовать XmlAdapter, который преобразует строку XML (т.е. FLT) в объект String (т.е. FLAT).

Если вы генерируете свою объектную модель из схемы XML, может помочь следующее:

...