Может ли JAX-WS отобразить дату XSD (xs: dateTime) в календарь Java? - PullRequest
3 голосов
/ 17 ноября 2010

Может JAX-WS отобразить дату XML-схемы (xs:dateTime), включая ее часовой пояс, на Java Calendar?

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

Да, это возможно.

Первый подход к контракту
Вам необходимо использовать элемент 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>
1 голос
/ 17 ноября 2010

Я думаю, это будет работать по умолчанию;JAXB (механизм связывания данных, который используют реализации JAX-WS) должен знать, как преобразовывать значения XML в java.util.Calendar.

Если нет, тип данных даты / времени по умолчанию, используемый в XML, - это javax.xml.datatype.XMLGregorianCalendar, который можно преобразовать с помощью метода toGregorianCalendar () (который будет иметь тип java.util.GregorianCalendar, подкласс java.util.Calendar).Таким образом, одна возможность состоит в том, чтобы привязать данные к XMLGregorianCalendar, а затем просто конвертировать назад / вперед при доступе.Это также можно автоматизировать с помощью XMLJavaTypeAdapter.

...