java.util. Список является интерфейсом, и JAXB не может обработать интерфейсы

45
задан informatik01 26 August 2013 в 15:53
поделиться

2 ответа

В моем понимании Вы не будете в состоянии обработать плоскость List через JAXB, поскольку JAXB понятия не имеет, как преобразовать это в XML.

Вместо этого необходимо будет определить тип JAXB, который содержит List<RelationCanonical> (я назову его Type1), и другой для содержания списка тех типов, в свою очередь (поскольку Вы имеете дело с List<List<...>>; я назову этот тип Type2).

результатом мог тогда быть XML ouput как это:

<Type2 ...>
    <Type1 ...>
        <RelationCanonical ...> ... </RelationCanonical>
        <RelationCanonical ...> ... </RelationCanonical>
        ...
    </Type1>
    <Type1>
        <RelationCanonical ...> ... </RelationCanonical>
        <RelationCanonical ...> ... </RelationCanonical>
        ...
    </Type1>
    ...
</Type2>

Без двух включающих JAXB-аннотируемых типов, процессор JAXB понятия не имеет, какую разметку генерировать, и таким образом приводит к сбою.

- Редактирование:

то, Что я имею в виду, должно несколько походить на это:

@XmlType
public class Type1{

    private List<RelationCanonical> relations;

    @XmlElement
    public List<RelationCanonical> getRelations(){
        return this.relations;
    }

    public void setRelations(List<RelationCanonical> relations){
        this.relations = relations;
    }
}

и

@XmlRootElement
public class Type2{

    private List<Type1> type1s;

    @XmlElement
    public List<Type1> getType1s(){
        return this.type1s;
    }

    public void setType1s(List<Type1> type1s){
        this.type1s= type1s;
    }
}

необходимо также проверить раздел JAXB в учебном руководстве J5EE и Неофициальное Руководство JAXB .

26
ответ дан Flexo 26 November 2019 в 21:31
поделиться

Если это соответствует вашим целям, вы всегда можете определить такой массив:

YourType[]

JAXB определенно может определить, что это такое, и вы сможете сразу же использовать его на стороне клиента. Я бы также порекомендовал вам сделать это таким образом, поскольку вы не должны иметь возможность изменять массив, полученный с сервера через список, а через методы, предоставляемые веб-службой

8
ответ дан 26 November 2019 в 21:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: