Я пытался сопоставить простой тип с ограничениями по шаблону
<xs:simpleType name="exampleType">
<xs:restriction base="xs:string">
<xs:pattern value="\d{3,6}"/>
</xs:restriction>
</xs:simpleType>
В класс перечисления (со значениями, основанными на каком-либо документе спецификации):
<jaxb:bindings node="//xs:simpleType[@name='ExampleType']">
<jaxb:typesafeEnumClass name="EnumExample">
<jaxb:typesafeEnumMember value="1" name="description_1" />
....
</jaxb:typesafeEnumClass>
</jaxb:bindings>
Но получил
com.sun.istack.SAXParseException2: enum class customization is specified on a type that has no enumeration facet.
Это или что-то подобное возможно как-то?
2 ответа
Ваш тип данных допускает только 6 значений. Вместо использования xs:pattern вы должны использовать xs:enumeration. Вы не указали значения, поэтому я привел некоторые значения в качестве примера:
<xs:simpleType name="exampleType">
<xs:restriction base="xs:string">
<xs:enumeration value="100"/>
<xs:enumeration value="2000"/>
<xs:enumeration value="30000"/>
<xs:enumeration value="400000"/>
<xs:enumeration value="100001"/>
<xs:enumeration value="999999"/>
</xs:restriction>
</xs:simpleType>
Вместо того, чтобы позволять JAXB генерировать перечисление на основе значений перечисления XSD, представляется возможным сопоставить собственный класс перечисления:
<jaxb:bindings node="//xs:simpleType[@name='customType']">
<jaxb:class ref="com.package.EnumCustom" />
</jaxb:bindings>
Вручную написано:
@XmlType(name = "")
@XmlEnum
public enum EnumCustom {
@XmlEnumValue("111") VALUE_A,
@XmlEnumValue("111222") VALUE_B,
...
;
}
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
\d{3,6}
равно10^3 + 10^4 + 10^5 + 10^6