2016-11-05 3 views
0

JAX-Bを使用してenumを生成する際に問題が発生しました。 ケースを介して等しい要素が分離されたスキーマに言語コードがあります。要素が等しいJAX-B列挙型生成

値にアクセスしようとしたときに少し問題がある何
/** 
* Afar 
* 
*/ 
@XmlEnumValue("aa") 
VALUE_1("aa"), 

/** 
* Afar 
* 
*/ 
@XmlEnumValue("AA") 
VALUE_2("AA"), 

: だから例えば、私たちのようなスキーマを持つemun内の他のすべての言語コードとの組み合わせになりDEdeと1のエントリを持っていますVALUE_Xの名前を付けます。 これを防ぐ方法はありますか? enumの値は、AA,DEなどのように、私は一意でなければならないと知っていました。唯一の違いがそのような場合に何をすべきか。あなたの問題は、単にVALUE_1命名されている場合は

+1

@ davidxxx私は会社から得たxsdスキーマファイルから生成します。 – LostKatana

+1

@dur私の同僚がxjcを使用しました。 – LostKatana

答えて

2

、あなたは小文字のエントリ、たとえば、のために列挙型のメンバー名をカスタマイズすることでこれを修正することができます

<jaxb:bindings schemaLocation=".../myxsd" node="/xs:schema"> 
    <jaxb:bindings node="xs:simpleType[@name='MyLangType']"> 
     <jaxb:typesafeEnumClass> 
      <jaxb:typesafeEnumMember name="LOWER_AA" value="aa"/> 
      <!-- ... --> 
     </jaxb:typesafeEnumClass> 
    </jaxb:bindings> 
</jaxb:bindings> 

またjaxb:javaTypeを使用してjava.util.Localeに直接あなたのタイプをマッピングする検討することができます。

+0

ありがとうlexicore私はmondayに会社に戻るとき、私はその解決策を試みます。 – LostKatana

+0

多くの言語コードとして、タイプセーフなバインディングを生成するプログラムを作成した後、魅力的に働いた:-) – LostKatana