2012-06-25 13 views
8

XML'den JAX Bean'i doldurmam gerekiyor, ancak setter yöntemi yok. Ben bir tarih almak ve XMLGregorianCalendar onu dönüştürmek ve sonra benim sarıcı sınıfında bir ayarlayıcı çağırmak için aşağıdaki yöntemleri yazdıXMLGregorianCalendar Popülasyonu Nasıl Yapılır()

Failed to invoke public javax.xml.datatype.XMLGregorianCalendar() with no args 

altında şu mesajı olsun. Ancak yine de istisna yapıyorum. Bu veri türüne baktığım standart bir yöntem var mı? Belki de sarmalayıcı sınıfım onu ​​çağırmıyor, ancak Netbeans bir sebepten dolayı bir hata ayıklayıcı eklememe izin vermiyor.

public XMLGregorianCalendar asXMLGregorianCalendar(java.util.Date date) throws DatatypeConfigurationException { 
    DatatypeFactory datatypeFactory = DatatypeFactory.newInstance(); 
    if (date == null) { 
     return null; 
    } else { 
     GregorianCalendar gc = new GregorianCalendar(); 
     gc.setTimeInMillis(date.getTime()); 
     return datatypeFactory.newXMLGregorianCalendar(gc); 
    } 
} 

Bean içinde setter Ben Joda Saati kullanılarak öneririm

public void setDeliveryDate(XMLGregorianCalendar value) { 
    this.deliveryDate = value; 
} 
+0

Eğer soru söylediği gibi XML doldurmak için çalışıyoruz, ya da örnek kod gösterildiği gibi bir tarihi nesneden onu doldurmak için çalışıyoruz: yanlış anlıyorum sürece Yani, XML doldurmak için sadece kullanılır? –

cevap

8

Sizin örnek kod soru kendisi XML doldurmak için çalıştıklarını ileri sürüyor ederken, bir Date nesnesi ile doldurmak için çalışıyor gösterir.

XmlGregorianCalendar cal = DatatypeFactory.newInstance().newXMLGregorianCalendar(yourXmlDateTimeString); 
0

altındadır - Java Tarihi Api geliştiricileri bir sürü frustrates. Çekirdek kitaplıklarına bağlı kalmak istiyorsanız, bir DataTypeFactory kullanmayı deneyin.

public static XMLGregorianCalendar asXMLGregorianCalendar(Date date) { 
    java.util.GregorianCalendar calDate = new java.util.GregorianCalendar();   
    calDate.setTime(date); 
    javax.xml.datatype.XMLGregorianCalendar calendar = null; 
     try { 
      javax.xml.datatype.DatatypeFactory factory = javax.xml.datatype.DatatypeFactory.newInstance(); 
      calendar = factory.newXMLGregorianCalendar(
      calDate.get(java.util.GregorianCalendar.YEAR), 
      calDate.get(java.util.GregorianCalendar.MONTH) + 1, 
      calDate.get(java.util.GregorianCalendar.DAY_OF_MONTH), 
      calDate.get(java.util.GregorianCalendar.HOUR_OF_DAY), 
      calDate.get(java.util.GregorianCalendar.MINUTE), 
      calDate.get(java.util.GregorianCalendar.SECOND), 
      calDate.get(java.util.GregorianCalendar.MILLISECOND), 0); 
     } catch (DatatypeConfigurationException dce) { 
      //handle or throw 
     } 
    return calendar; 
}