У меня есть схема, которая определяет тип с дополнительными логическими атрибутами. Я хотел бы добавить тип, который добавляет ограничение, которое устанавливает значение по умолчанию для атрибутов «истинный»Применение значения значения по умолчанию в генерируемых Java-классах JAXB
<xsd:complexType name="bob">
<xsd:attribute name="isBob" type="xsd:boolean" use="optional" />
</xsd:complexType>
<xsd:complexType name="reallyBob">
<xsd:complexContent>
<xsd:restriction base="sa:bob">
<xsd:attribute name="isBob" type="xsd:boolean" default="true" use="optional" />
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
однако, когда мы используем JAXB для создания классов Java для этого класса ReallyBob не применяются какие-либо ограничений.
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "reallyBob")
public class ReallyBob
extends Bob
{
}
Есть ли какой-то способ, которым я могу получить сгенерированный класс ReallyBob, чтобы установить значение по умолчанию isBob атрибутов?
Я видел подобные вопросы об ограничениях не применяемых JAXB, т.е. here и here Ответы указывают на поворот на проверку схемы во время сортировочных ... Я не уверен, как это будет применяться в этом случае, как значения по умолчанию, а чем стоимостные ограничения.
Возможно, есть еще один подход к этому все вместе?
Благодаря Кирсти, мы не можем использовать «в класс ", поскольку классы генерируются, и любые коды кода будут отброшены в следующий раз, когда они будут сгенерированы. Однако мы могли бы использовать экземпляр Unmarshaller.Listener для установки значений по умолчанию для наших ограниченных (со значениями по умолчанию) элементов. Это сработает. Однако это означает, что нам нужно реплицировать набор значений по умолчанию, определенных в схеме и в прослушивателе Unmarshalling, со всеми шансами на ошибки, которые влечет за собой .... но я еще не нашел лучшего способа достичь этого. –
А мои извинения, я не понимал. Да, ваше решение будет делать то же самое, что и мое, просто где-то другое! Одно последнее предложение, которое у меня есть, заключается в том, что иногда аннотации JAXB явно не нужны, проверили ли вы, что значение по умолчанию определенно не установлено? – kirsty