gpt4 book ai didi

java - JAXB XmlID 和 XmlIDREF 注释(架构到 Java)

转载 作者:行者123 更新时间:2023-12-01 16:12:41 28 4
gpt4 key购买 nike

我正在使用 CXF 公开 Web 服务。我使用 @XmlID 和 @XmlIDREF JAXB 注释来在编码/解码期间维护对象图的引用完整性。

WSDL 正确地包含具有 xs:id 和 xs:idref 属性的元素来表示这一点。

在服务器端,一切都运行得很好。用 @XmlIDREF 注释的类型实例与用 @XmlID 注释注释的类型实例是相同的实例(如 == 中所示)。

但是,当我使用 WSDLToJava 生成客户端时,引用(用 @XmlIDREF 注释的引用)的类型为 java.lang.Object。

是否有任何方法可以自定义 JAXB 绑定(bind),以便引用类型为 java.lang.String(以匹配引用类型的 ID)或与引用类型本身相同?

最佳答案

使用内联 JAXB 绑定(bind)来指示要使用的类型。然后 JAXB 生成的代码将具有正确的类型。

<complexType name="Column">
<sequence>
<element name="name" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="referencedColumn" type="IDREF" maxOccurs="1" minOccurs="0">
<annotation>
<appinfo>
<jaxb:property>
<jaxb:baseType name="Column"/>
</jaxb:property>
</appinfo>
</annotation>
</element>
</sequence>
<attribute name="id" type="ID" use="required"></attribute>
</complexType>

另请注意,您必须在 schema 元素中声明 jaxb 命名空间和 JAXB 版本。

<schema targetNamespace="http://example.com/schema" 
elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="1.0">

关于java - JAXB XmlID 和 XmlIDREF 注释(架构到 Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/439629/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com