2011-09-27 13 views
6

JAXB'yi kullanırken bir sorunum var. Java Sınıflarımı xjc (xsd-şema kullanarak) oluşturdum ve XML-Datatypes xs için global bir bağlamaya sahip oldum: date xs: dateTime ve xs: java.util.Calendar ile ayrıştırma ve yazdırma yöntemi.Java: JAXB: JAXBElement <Calendar>'un xs'ye eklenmesi: tarih bilinmiyor

Bazı x'ler işaretlenene kadar her şey iyi çalışıyor: tarih alanları sıfırlanabilir olarak. Xjc, bu özellikler için JAXBElement sarıcıları oluşturur. Bu alanlar gölgelendirilmezse, doğrulama hatalarına yol açan zaman bilgisi de dahil olmak üzere tarih yazdırılır.

Marshaller'ı xs'ye dönüştürmeye zorlamak için bir olasılık var mı: xs yerine date: dateTime?

Bu alanları dönüştüren özel bir XMLAdapater alan alanlar için bir ciltleme belirtebilir miyim?

@XmlElementRef(name = "dateField", namespace = "namespace", type = JAXBElement.class) 

protected JAXBElement<Calendar> dateField; 

ve

<xs:element name="dateField" minOccurs="0" nillable="true" type="xs:date" /> 

gibi karşılık gelen xsd-görünüyor biri bana lütfen yardımcı olabilir: Java Class içindeki

mülkiyet benziyor?

Teşekkür ve saygılarımla,

Arne

+0

İlk başta 'nillable =" true "' istediğinize emin misiniz? Öğeyi isteğe bağlı yapamaz mısın? Asla gerçek bir ihtiyaç görmedim ya da onu özlediğimi hissettim. –

cevap

1

Eğer gerçekten (yerine miras XMLGregorianCalendar kullanmak doğru olmaz ?, bir JAXBElement içindeki Takvim eşleştirmeniz gerekir ve sonra dönüştürebilirsiniz yapın buluşma)?