Два @XmlJavaTypeAdapters для одного @XmlAttribute в JAXB? - PullRequest
1 голос
/ 06 июня 2011

У меня есть такой класс:

@XmlRootElement(name = "PricingGroup")
public class PricingGroup {

    ...

    @XmlAttribute(name = "partyName")
    @XmlJavaTypeAdapter(CustomerGroupRelationships.Adapter.class)
    private List<BilltoCustomer> billtoCustomers = new ArrayList<BilltoCustomer>();

    @XmlAttribute(name = "partyName")
    @XmlJavaTypeAdapter(PartyNames.Adapter.class)
    private PartyName partyName;  

    ...  
}

Кажется, JAXB не может отобразить два @XmlJavaTypeAdapter s для одного атрибута (здесь partyName). Если я закомментирую либо аннотации на billtoCustomers, либо аннотации на partyName, другая переменная-член будет считана из XML без проблем.

Как я могу получить оба значения одновременно?

1 Ответ

2 голосов
/ 06 июня 2011

Вы можете сопоставить одно из свойств (partyName), а затем использовать событие afterUnmarshal для получения другого свойства (billToCustomers):

@XmlRootElement(name = "PricingGroup")
public class PricingGroup {

    ...

    @XmlTransient    
    private List<BilltoCustomer> billtoCustomers = new ArrayList<BilltoCustomer>();

    @XmlAttribute(name = "partyName")
    @XmlJavaTypeAdapter(PartyNames.Adapter.class)
    private PartyName partyName;  


   void afterUnmarshal(Unmarshaller u, Object parent) {
      // Derive billToCustomers from partyName
   }

    ...  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...