【发布时间】:2010-11-16 21:56:01
【问题描述】:
JAX-WS 能否将 XML schema date (xs:dateTime)(包括其时区)映射到 Java Calendar?
【问题讨论】:
标签: java datetime calendar jax-ws
JAX-WS 能否将 XML schema date (xs:dateTime)(包括其时区)映射到 Java Calendar?
【问题讨论】:
标签: java datetime calendar jax-ws
是的,可以。
合同优先方法
您需要使用 jaxb:javaType 元素。有一些一般信息here 和您需要做什么的示例here。
合同最后的方法
@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 并且它有效。
我认为默认情况下它会起作用; JAXB(JAX-WS 实现使用的数据绑定器)应该知道如何在 XML 值和 java.util.Calendar 之间进行转换。
如果不是,则与 XML 一起使用的默认日期/时间数据类型是 javax.xml.datatype.XMLGregorianCalendar,可以使用 toGregorianCalendar() 方法进行转换(它将是 java.util.GregorianCalendar 类型,一个 java.util。日历子类)。因此,一种可能性是将数据绑定到 XMLGregorianCalendar,然后在访问时来回转换。这也可以通过使用 XMLJavaTypeAdapter 实现自动化。
【讨论】: