Предыдущая версия моих методов WS использовала AttributeConverter в сущностях для реализации этой логики, но я не могу использовать это подходить больше. Поэтому я попытался вместо этого использовать XmlJavaTypeAdapter.
Я создал и применил следующий адаптер:
Код: Выделить всё
@Override
public Long unmarshal(String val) throws Exception {
if (val == null) {
return 0L;
}
return Long.parseLong(val);
}
@Override
public String marshal(Long val) throws Exception {
if (val == null || Long.valueOf(0).equals(val)) {
return null;
}
return val.toString();
}
Как мне этого добиться?
Мое поле DTO помечено
Код: Выделить всё
@XmlElement(required = false, nillable = false)
Я проверил, что адаптер вызывается правильно.
Я хотел бы придерживаться подхода к адаптеру, который кажется наиболее ясным и кратким (я знаю, что я мог бы, например, добавить некоторую логику в геттеры/сеттеры для полей или ручное сопоставление в другом месте, но я бы хотел этого избежать). Я также читал о подходе с настройкой специального прослушивателя маршаллера, но мне это кажется громоздким.
Есть ли способ настроить маршаллер так, чтобы поле значения было нулевым (даже в результате вызов адаптера), это поле полностью пропускается в результирующем XML?
Подробнее здесь: https://stackoverflow.com/questions/787 ... a-result-o