2

これは、数値を使用した 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 ファイルを所有していないため、インライン カスタマイズを使用することはできません。

それで、どうすればこれを機能させることができますか?

どんな助けでも大歓迎です。

4

0 に答える 0