4


2

JAXBを使用して、Java Beanを直接生成します。 XSDでは、列挙型があります。


JAXBはこの型を使用してフィールドの列挙型を生成します。 これらのクラスはActionScriptクラスにマップされ、ActionScriptには列挙型がないため、生成されたJavaクラスでStringに変換したいと思います。

それを行う方法はありますか、ある種のコンバータを実装する? XmlJavaTypeAdapterと一緒に使用できますか。

3 Answer


7


XJCに列挙型を生成させないように強制することができます。 http://docs.oracle.com/javaee/5/tutorial/doc/bnbbf.html#bnbcd [この文書]の「グローバルバインディング宣言」の節を参照してください。

_ typesafeEnumBaseがxsd:stringに設定されている場合、xsd:stringから直接または間接的に派生し、列挙ファセットを持つすべての単純型定義をデフォルトで型保証列挙にバインドすることを指定するグローバルな方法になります。 * typesafeEnumBaseが空の文字列 ""に設定されている場合、単純な型定義はデフォルトでは型保証されたenumクラスにバインドされません。* _


1


JAXBチュートリアルの[データ型の上書き] [1]セクションを調べてください。 これは、ページ下部の例のようにカスタマイズされたバインディングファイルを使って設定できます。

(JAXBで生成されたenumには一般的なスーパークラスがないということが原因で)組み込みのものが1つもないように思われるので、残念ながら独自の変換方法(したがってクラス)を記述する必要があると思います。 しかし、あなたがする必要があるのはあなたのenumオブジェクトの `value()`メソッドを呼び出すことだけで、それはそれにマッピングされたStringを返します。


1


jaxb:globalBindings typesafeEnumBase = "xs:boolean"は機能します - 推奨されるように空白のままにすることはバインディングスキーマには無効です。