2015-05-20 1 views
2

Что это означает перед переменной в классе Java @XmlElement(nillable = true). Означает ли это, что поле в xml необязательно? например: @XmlElement(nillable = true) protected String name;Что это означает перед переменной в классе Java @XmlElement (nillable = true)

+0

означает, что имя может быть пустым – Stultuske

ответ

0

Это означает, что он дает значение null в поле.

1

nillable является XML schema element:

nillable: Необязательно. Указывает, может ли явное значение null присваиваться элементу. Истина позволяет экземпляру элемента присвоить значение null атрибуту true. Нулевой атрибут определяется как часть пространства имен XML Schema для экземпляров. Значение по умолчанию - false.

Итак:

@XmlElement(nillable = true) protected String name; 

означает, что вы можете назначить null переменной name.

+0

Спасибо за ваш ответ, да, это –

0

Опция nillable означает, что значение null будет представлено с использованием xsi:nil механизма:

<name xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> 

, но это необычно для элемента в JAXB, чтобы быть как nillable и опционально (@XmlElement имеет required вариант, но это false по умолчанию). Обычно вы отмечаете конкретный элемент как простой @XmlElement (не требуется, поэтому Java null означает, что в XML нет элемента) или как @XmlElement(nillable = true, required = true) (обязательно, поэтому Java null означает элемент XML с xsi:nil="true").

Если элемент является одновременно nillable и опционального то, как правило, должно быть JAXBElement<String> вместо того, чтобы просто String, чтобы различать недостающий элемент (а null JAXBElement) и один, который присутствует, но «ноль» (а не- null JAXBElement, чья isNil() возвращает true).

Смежные вопросы