Столкновение метода между JAXB и остальной частью Приложения - PullRequest
1 голос
/ 02 августа 2011

Я конвертирую существующий POJO в JAXB-совместимый.Все работает отлично, за исключением одного метода получения в pojo, где мне нужна дополнительная логика, специфичная для рендеринга XML.Однако этот метод получения уже вызывается где-то в приложении, и я не могу изменить поведение этого метода.Как обычно я справляюсь с такими коллизиями имен методов?Есть ли способ создать отдельный метод только для цели JAXB и пометить текущий метод как XMlTransient?

Спасибо

Ответы [ 2 ]

2 голосов
/ 02 августа 2011

Вы можете поместить XmlAccessorType (XmlAccessType.FIELD) в класс. Затем аннотации JAXB будут выбраны из имен полей, а не имен методов. Например:

@XmlAccessorType(XmlAccessType.FIELD)
public class MyType {
    @XmlElement String f1;
    @XmlElement Integer f2;

    // JAXB doesn't care about these:
    public String getF1() {return f1;}
    public String getF2() {return f2;}
    public void setF1(String f1) {this.f1 = f1;}
    public void setF2(Integer f2) {this.f2 = f2;}
}
2 голосов
/ 02 августа 2011

Да, именно то, что вы сказали, будет работать.Сделайте один метод @XmlTransient, затем напишите другой метод и сделайте его @XmlElement (name = "независимо от имени элемента").

...