У меня есть основной класс:
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class Foo {
@XmlAnyElement
public Collection<Object> items;
}
Теперь я добавляю новый элемент в эту коллекцию items
во время выполнения:
@XmlJavaTypeAdapter(ItemAdapter.class)
public class Item {
}
И я ожидаю вызова на marshal(Item)
в ItemAdapter во время сортировки Foo
:
public class ItemAdapter extends XmlAdapter<String, Item> {
@Override
public String marshal(final Item item) {
return "hello";
}
}
Но этого вызова не происходит, вместо этого я получаю следующее исключение:
[com.sun.istack.SAXException2: unable to marshal type "Item" as
an element because it is missing an @XmlRootElement annotation]
Что я делаю не так? Помните, что Foo.items
может содержать элементы других типов, а не только Item
.