簡體   English   中英

如何用jaxb綁定joda-time

[英]How to bind joda-time with jaxb

我正在上這樣的課

@XmlRootElement(name = "executionStats")
public class ScriptExecutionStatistics {

private DateTime start;
private DateTime end;

public ScriptExecutionStatistics() { }

public ScriptExecutionStatistics(DateTime start, DateTime end) {
    this.start = start;
    this.end = end;
}

@XmlAttribute
public DateTime getStart() {
    return start;
}

public void setStart(DateTime start) {
    this.start = start;
}

@XmlAttribute
public DateTime getEnd() {
    return end;
}

public void setEnd(DateTime end) {
    this.end = end;
}

}

我想在xml中序列化它,所以它看起來像這樣

<scriptExecutionStatistics start="17.08.2015 18:17:00" end="17.08.2015 18:18:00" />

我知道如果我想將joda時間與jaxb綁定,那么適配器將是必要的,但它讓人感到困惑我沒有真正得到它。 所以我開始了

public class DateTimeAdapter extends XmlAdapter<ScriptExecutionStatistics, DateTime>{
private static DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");

@Override
public DateTime unmarshal(ScriptExecutionStatistics vt) throws Exception {
    throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public ScriptExecutionStatistics marshal(DateTime bt) throws Exception {
    ScriptExecutionStatistics stats = new ScriptExecutionStatistics();

}

}

能幫我完成它嗎? 提前致謝

DateTimeAdapter應該元帥/解組DateTime從到/ String

public class DateTimeAdapter extends XmlAdapter<String, DateTime>{
   private static DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");

   @Override
   public DateTime unmarshal(String vt) throws Exception {
       return dtf.parseDateTime(vt);
   }

   @Override
   public String marshal(DateTime bt) throws Exception {
       return dtf.print(bt);

   }
}

您還應該使用@XmlJavaTypeAdapter注釋在ScriptExecutionStatistics注釋適當的字段/ getter

@XmlJavaTypeAdapter(DateTimeAdapter.class)
@XmlAttribute
public DateTime getStart() {
    return start;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM