これは、数値を使用した JAXB 列挙に関する追加の質問です。より完全な説明はhttp://blog.bdoughan.com/2011/08/jaxb-and-enums.htmlにあり、その投稿にリンクしています。Blaise のブログ投稿を出発点として使用します。とても役に立ちました、ありがとう。
ブログに示されているように xjc を呼び出し、XSD ファイルとバインディング ファイルを渡すと、生成された型はブログに示されているものと同じになります。まあまあ。
しかし、私の Maven ビルドは、XSD ファイルのセットに対して直接 xjc を呼び出しません。XSD ファイルを含む WSDL ファイルで wsdl2java を呼び出します。-b パラメーターを wsdl2java 呼び出し ( http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html、例 7)を介して xjc に渡すことができます。つまり、列挙型はバインディング ファイルに従って正しく生成されますが、それを使用するフィールド --- http://blog.bdoughan.com/2011/08/jaxb-and-enums.htmlの例の Person.educationLevel --- タイプは String ですが、EducationLevelType ではありません。
また、外部バインディング ファイルの代わりにインライン カスタマイズを使用してみました。つまり、XSD ファイルの教育レベル タイプの simpleType 要素を次のように装飾しました。
<annotation>
<appinfo>
<jxb:typesafeEnumClass>
<jxb:typesafeEnumMember value="1-6" name="ONE_TO_SIX"/>
<jxb:typesafeEnumMember value="6-12" name="SIX_TO_TWELVE"/>
...etc...
</jxb:typesafeEnumClass>
</appinfo>
</annotation>
これは、wsdl2java を介して使用した場合でもうまく機能します。列挙型は正しく生成され、フィールドの型は EducationLevelType です。
ただし、XSD ファイルを所有していないため、インライン カスタマイズを使用することはできません。
それで、どうすればこれを機能させることができますか?
どんな助けでも大歓迎です。