Using JAXB 2.0's XmlJavaTypeAdapter

有時,有的類和xml無法完全綁定,即xml和類中的某個屬性無法綁定;同時JAXB要求類必須有個默認的構造函數,否則會出現如下錯誤

error: java.sql.Timestamp does not have a no-arg default constructor

注:這裏用java.sql.Timestamp 表示無法和xml綁定的類

 

這個時候我們要寫一個繼承自XmlAdapter的adapter類,如下:

import java.sql.Timestamp;
import java.util.Date;

import javax.xml.bind.annotation.adapters.XmlAdapter;

public class TimestampAdapter extends XmlAdapter<Date, Timestamp> {

   public Date marshal(Timestamp t) {
     return new Date(t.getTime());
   }

   public Timestamp unmarshal(Date d) {
     return new Timestamp (d.getTime());
   }

}

 然後使用@XmlJavaTypeAdapter標記到使用java.sql.Timestamp類的地方,例如:

@XmlRootElement
public class InfoDTO {
  private Timestamp createTime;
  ...
  @XmlJavaTypeAdapter(Timestamp.class)
  public Timestamp getCreateTime() {
    return this.createTime;
  }

}

 

更多請參考: http://weblogs.java.net/blog/2005/09/30/using-jaxb-20s-xmljavatypeadapter

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章