2011-09-27 17 views
6

Tengo un problema al usar JAXB. Creé mis Java Classes a través de xjc (usando un esquema xsd) y tengo un enlace global para XML-Datatypes xs: date xs: dateTime y xs: time to java.util.Calendar con el método de análisis e impresión.Java: JAXB: revisión de JAXBElement <Calendar> a xs: fecha incorrecta

Todo funciona bien hasta que marqué algunos campos xs: date como nillable. El xjc crea envoltorios JAXBElement para esas propiedades. Si estos campos se eliminan, la fecha se imprime, incluida la información de tiempo que conduce a errores de validación.

¿Hay alguna posibilidad de forzar al Marshaller a convertirlo a xs: date en lugar de xs: dateTime?

¿Puedo especificar un enlace para esos campos que obtiene un XMLAdapater especial que convierte esos campos?

La propiedad dentro de la clase Java que se parece a:

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

protected JAXBElement<Calendar> dateField; 

y los correspondientes XSD se parece a

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

Puede alguien ayudarme por favor?

Gracias y un saludo,

Arne

+0

¿Estás seguro de que quieres 'nillable =" true "' en primer lugar? ¿No puedes hacer que el elemento sea opcional? Nunca he visto una necesidad real o siento que me he perdido. –

Respuesta

1

¿Usted realmente necesita para asignar el calendario dentro de un JAXBElement ?, no sería correcto usar el legado XMLGregorianCalendar lugar (y luego se puede convertir a una cita)?

Cuestiones relacionadas