Може ли JAX-WS да картографира Дата на XML схема (xs:dateTime
), включително нейната часова зона, към Java Calendar
?
Може ли JAX-WS да картографира XSD дата (xs:dateTime) към Java календар?
Отговори (2)
Да, може.
Първи подход за договор
Трябва да използвате елемента jaxb:javaType
. Има обща информация тук и пример за това какво трябва да направете тук.
Договор последен подход
@WebMethod(operationName = "getTest")
public Calendar getTest(@WebParam(name = "input") Calendar input) {
input.roll(Calendar.DAY_OF_YEAR, 1);
return input
}
Ще картографира към:
<xs:complexType name="getTest">
<xs:sequence>
<xs:element name="input" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getTestResponse">
<xs:sequence>
<xs:element name="return" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
@WebParam
и работи.
- person Derek Mahar; 19.11.2010
Мисля, че ще работи по подразбиране; JAXB (свързващо устройство за данни, което използват имплементациите на JAX-WS) трябва да знае как да конвертира между XML стойности и java.util.Calendar.
Ако не, типът данни за дата/час по подразбиране, използван с XML, е javax.xml.datatype.XMLGregorianCalendar, който може да бъде преобразуван с помощта на метода toGregorianCalendar() (който ще бъде от тип java.util.GregorianCalendar, подклас на java.util.Calendar) . Така че една възможност е да получите данни, обвързани с XMLGregorianCalendar, след което просто да конвертирате напред/назад при достъп. Това може да се автоматизира и с помощта на XMLJavaTypeAdapter.