2

JAXB は、構造を XML にダンプするために効率的に使用でき、注釈はほとんどありません。JAXB の詩は、いくつかの DTO を作成したり、マーシャリングされたクラスをボイラープレート コードで乱雑にしたりする必要がないことです。

しかし、データを提供するメソッドが getter ではなく、formatDescription() や toString() のようなものであることがよくあります。

getDescription() を追加してサブクラス化できるため、単一のクラスであれば、これはあまり問題になりません。しかし、MOXy の機能を利用してインターフェイスをマーシャリングすると、これは難しくなります。メソッドをインターフェイスに追加し、すべての実装を変更する必要があります。またはサブクラス化されたインターフェースとすべての実装も。

// @XmlElement(name = "desc") // DOESN'T WORK.
String toDescription();

// JAXB needs getter :/
@XmlElement(name = "desc")
String getDescription();

MOXy が で始まらないメソッドを受け入れるようにする方法はありget*ますか?

4

1 に答える 1

1

MOXy では、(注釈の代わりに) XML ファイルで外部メタデータを使用できることがわかりました。Jaxb EclipseLink/MOXyにも記載されています: get/set メソッドの名前を指定することは可能ですか。

したがって、この場合、設定します

<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
    package-name="forum8834871">
    <java-types>
        <java-type name="ServerInfo" xml-accessor-type="PUBLIC_MEMBER">
            <xml-root-element/>
            <java-attributes>
                <xml-element name="desc" java-attribute="description" >
                    <xml-access-methods get-method="toDescription"/>
                </xml-element>
            </java-attributes>
        </java-type>
    </java-types>
</xml-bindings>

を省略した場合、動作しない可能性がありset-methodます。

とにかく - これは単なる回避策なので、機能リクエストに記入しました

于 2013-06-07T10:58:29.920 に答える