我正在將現有的POJO轉換爲符合JAXB的。一切工作正常,除了POJO的getter方法之一,我需要一個額外的邏輯特定於呈現XML。但是,這個getter已經在應用程序中的某個地方被調用過了,我不能修改這個方法的行爲。 我通常如何處理這種方法名稱衝突?有沒有辦法爲JAXB創建一個單獨的方法,並將當前方法標記爲XMlTransient?JAXB與其他應用程序之間的方法衝突
謝謝
我正在將現有的POJO轉換爲符合JAXB的。一切工作正常,除了POJO的getter方法之一,我需要一個額外的邏輯特定於呈現XML。但是,這個getter已經在應用程序中的某個地方被調用過了,我不能修改這個方法的行爲。 我通常如何處理這種方法名稱衝突?有沒有辦法爲JAXB創建一個單獨的方法,並將當前方法標記爲XMlTransient?JAXB與其他應用程序之間的方法衝突
謝謝
是的,正是你所說的會工作。創建一個方法@XmlTransient,然後編寫另一個方法並使其成爲@XmlElement(name =「any element name」)。
您可以將XmlAccessorType(XmlAccessType.FIELD)放在類上。然後JAXB註釋將從字段名稱中獲取,而不是方法名稱。例如:
@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;}
}
現在我得到的改變有關的錯誤:com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:IllegalAnnotationExceptions的2個計數 物業部件1(其中JAXB從我的新的getter方法推導)存在但未在@ XmlType.propOrder – phewataal
中指定,只是意識到我必須將getter的派生屬性用作propOrder列表中的屬性名稱。 – phewataal