JAX-B сопоставление String с JAXBElement <string>

Вопрос:

Я пытаюсь сделать что-то, что должно быть относительно простым, добавьте подкласс для моего корневого элемента, который содержит только строки. Однако на стороне клиента этот объект имеет JAXBElement, сопоставленный вместо строк. Смотри ниже:

public class Foo {
protected Bar barObject;
}

public class Bar {
@XmlElement(nillable = true)
protected String barName;
}

Созданный Bar bean выглядит так.

public class Bar {
@XmlElementRef(name = "barName", type = JAXBElement.class, required = false)
protected JAXBElement<String> barString;
}

Я уверен, что это ногами мертвой лошади, но я не вижу ясного объяснения этого поведения в любом месте.

Лучший ответ:

Реализация JAXB будет генерировать свойство типа JAXBElement если соответствующий элемент равен nillalbe="true" и minOccurs-"0". Это так, что он может обойти оба государства.

<element name="barName" type="string" nillable="true" minOccurs="0"/>

Вы можете сделать элемент minOccurs="1", указав required флаг в @XmlElement.

@XmlElement(nillable = true, required=true)
protected String barName;

Оцените статью
TechArks.Ru
Добавить комментарий