typesafeEnumBaseがXSDに設定されている場合linkJAXBバインディング - 設定typesafeEnumBaseが空(文字列に列挙を変換)する
によると:文字列が、それはすべての単純型定義が派生することを指定 にグローバルな方法だろうまたは を間接的にxsd:stringから取得し、列挙ファセットを持つ場合は、デフォルトでtypesafe enumにバインドされている である必要があります。 typesafeEnumBaseが の空文字列 ""に設定されている場合、単純型定義は、デフォルトでは 型安全enumクラスにバインドされません。 typesafeEnumBaseの値は、 アトミックな単純型定義(xsd:booleanおよびバイナリ の両方を除く)を除くことができます。
だから私は私のbinding.xjb
に次のように設定しています
<jxb:globalBindings typesafeEnumBase=""/>
とjaxb2-maven-plugin
を実行しているとき、私は次の例外を取得:私の知る限り、私は設定できません理解し
lineNumber: 5; columnNumber: 46; cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type '#AnonType_typesafeEnumBaseglobalBindings'.
...
lineNumber: 5; columnNumber: 46; cvc-attribute.3: The value '' of attribute 'typesafeEnumBase' on element 'jxb:globalBindings' is not valid with respect to its type, 'null'.
を空文字列""
〜typesafeEnumBase
が記載されています。ドキュメンテーションは、それがxsd:boolean
になることもできないと述べている。
私が欲しいのは、関連のSOの質問がhereですが、私は空の文字列""
を設定したり、回答のtypesafeEnumBase
noneにxsd:boolean
値を設定することはできませんので、代わりにenum
<xs:simpleType name="phraseID">
<xs:restriction base="escapedStringUserType">
<xs:enumeration value="NOT_SPECIFIED"/>
<xs:enumeration value="X000-9999"/>
<xs:enumeration value="X000-9998"/>
</xs:restriction>
</xs:simpleType>
のString
に次を変換することです私のために働く(両方を試みた)。
あなたが引用したドキュメントはあまり言葉を言わず、 'typesafeEnumBase'を空文字列に設定することは実際にはできないと言います - 仮説的な状況を記述しているかのようにです(" would "という単語の使用から判断して) 。 [JAXB仕様](https://jcp.org/ja/jsr/detail?id=222)には何も言われていないので、これはサポートされているものではないということです。 – Jesper
@Jesper、返信ありがとう、列挙型の代わりに文字列を生成する他のソリューションですか? – pleft
列挙の制限を持つ特定の単純型に対して ' 'を使用することはできますが、これらの型すべてに対してグローバルに設定する方法はありません。 –
Jesper