JAX-WS 能否将 XSD 日期 (xs:dateTime) 映射到 Java 日历?

发布于 2024-10-03 00:45:32 字数 322 浏览 1 评论 0原文

可以 JAX-WS 映射 XML 模式日期 (xs:dateTime),包括其时区,到 Java 日历

Can JAX-WS map an XML schema date (xs:dateTime), including its time zone, to a Java Calendar?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

慈悲佛祖 2024-10-10 00:45:32

是的,可以。

合同优先方法
您需要使用 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>

Yes, it can.

Contract first approach
You need to use the jaxb:javaType element. There's some general information here and an example of what you need to do here.

Contract last approach

@WebMethod(operationName = "getTest")
public Calendar getTest(@WebParam(name = "input") Calendar input) {
  input.roll(Calendar.DAY_OF_YEAR, 1);
  return input
}

Will map to:

<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>
东北女汉子 2024-10-10 00:45:32

我认为默认情况下它会起作用; JAXB(JAX-WS 实现使用的数据绑定器)应该知道如何在 XML 值和 java.util.Calendar 之间进行转换。

如果不是,则 XML 使用的默认日期/时间数据类型是 javax.xml.datatype.XMLGregorianCalendar,可以使用方法 toGregorianCalendar() 进行转换(其类型为 java.util.GregorianCalendar,java.util.Calendar 子类) 。因此一种可能性是获取绑定到 XMLGregorianCalendar 的数据,然后在访问时来回转换。这也可以通过使用 XMLJavaTypeAdapter 来自动化。

I would think it would work by default; JAXB (data binder that JAX-WS implementations use) should know how to convert between XML values and java.util.Calendar.

If not, the default date/time datatype used with XML is javax.xml.datatype.XMLGregorianCalendar, which can be converted using method toGregorianCalendar() (which will be of type java.util.GregorianCalendar, a java.util.Calendar subclass). So one possibility is to get data bound to XMLGregorianCalendar, then just convert back/forth when accessing. This can also be automated by using XMLJavaTypeAdapter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文