6

私はこのようなJAXBクラスを持っています:

public class Game {
    private Date startTime;

    @XmlElement
    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
}

これにより、.xsdstartTimeのタイプは。になりxsd:datetimeます。になりたいですxsd:timexsd:timeにマップしますXmlGregorianCalendarが、逆マッピングxsd:anySimpleTypeはあまり役に立ちません。

私は@XmlElement(type=...)無駄にさまざまな議論を試みました。任意のポインタをいただければ幸いです。

違いがある場合、これはJAX-WSで使用されるタイプです。

4

1 に答える 1

6

Java クラスからスキーマを生成する場合は、次のように変更する必要があります。

public class Game {
    private XMLGregorianCalendar startTime;

    @XmlElement
    @XmlSchemaType(name = "time")
    public XMLGregorianCalendar getStartTimeForSchema() {
      return startTime;
    }

    public void setStartTimeForSchema(XMLGregorianCalendar startTime) {
      this.startTime = startTime;
    }

    @XmlTransient
    public Date getStartTime() {
      return startTime.toGregorianCalendar().getTime();
    }

    @XmlTransient
    public void setStartTime(Date startTime) {
    GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance();
      gc.setTime(startTime);
      DatatypeFactory dataTypeFactory = null;
      try {
        dataTypeFactory = DatatypeFactory.newInstance();
      } catch (DatatypeConfigurationException ex) {
        // log
      }
      this.startTime = dataTypeFactory.newXMLGregorianCalendar(gc);
    }
}
于 2009-11-11T12:14:01.203 に答える