2011-08-02 5 views
1

既存のPOJOをJAXB準拠に変換しています。 pojoのgetterメソッドの1つを除いて、すべてがうまく動作します。ここでは、XMLのレンダリングに固有のロジックが必要です。しかし、このゲッターはすでにアプリケーション内のどこかで呼び出されており、このメソッドの動作を変更することはできません。 どのようにしてこのようなメソッド名の衝突を処理するのですか? JAXBの目的と、現在のメソッドをXMlTransientとしてマークするための別のメソッドを作成する方法はありますか?JAXBと残りのアプリケーションとの間のメソッドの衝突

ありがとうございました

答えて

2

はい、まさにあなたが働くと言いました。 1つのメソッド@XmlTransientを作成し、別のメソッドを記述して@XmlElement(name = "任意の要素名")にします。

+0

私は今、変化に関連したエラーを取得しています)は存在しますが、@ XmlType.propOrderで指定されていません。 – phewataal

+0

は、getOnの派生プロパティをpropOrderリストのプロパティ名として使用する必要があることに気付きました。 – phewataal

2

XmlAccessorType(XmlAccessType.FIELD)をクラスに追加できます。 JAXBアノテーションはメソッド名ではなく、フィールド名から取得されます。たとえば:com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:IllegalAnnotationExceptionsの2つのカウントJAXBは、私の新しいgetterメソッドから派生 プロパティ要素1(

@XmlAccessorType(XmlAccessType.FIELD) 
public class MyType { 
    @XmlElement String f1; 
    @XmlElement Integer f2; 

    // JAXB doesn't care about these: 
    public String getF1() {return f1;} 
    public String getF2() {return f2;} 
    public void setF1(String f1) {this.f1 = f1;} 
    public void setF2(Integer f2) {this.f2 = f2;} 
} 
+0

私は、フィールドf1のthwフィールドの動作のみを必要とし、残りのプロパティは動作しませんでした。 XmlAccessType.FIELDをクラスレベルではなくフィールドレベルで定義する方法はありますか? – phewataal

+0

Blaiseありがとうございます。はい、私はあなたが提案したことをやり遂げました。 – phewataal