gpt4 book ai didi

web-services - CXF - 如何声明一个必需且非原始的属性?

转载 作者:行者123 更新时间:2023-12-04 20:53:37 26 4
gpt4 key购买 nike

我有一个接收对象的网络服务方法。其中一个属性是“间隔”,它是一个整数。

我想将此属性设为必需但不提供任何默认值 - 我希望要求用户显式设置一个值。

如果我使用 int interval - 属性作为 int 公开,如果用户没有明确设置属性,将发送零(Java 默认为原始 int)。

如果我使用 Integer interval - 该属性公开为整数,并在 WSDL 中声明为可选,因此用户在发送请求之前看不到它是必需的。

如果我使用 Integer interval@XmlElement(required = true)@XmlElement(nillable = false) - 属性公开为 int。

该属性可以有任何整数 - 负数、零和正数,因此我不能使用默认值来指示该属性未显式设置。

我可以使用 BigInteger interval@XmlElement(required = true)但比我们缺少使用核心类型整数的优势。

我想将属性公开为整数,因此如果用户没有设置属性,我将得到 null,同时我希望 WSDL 公开该属性是必需的,这样用户只需查看即可知道它是必需的WSDL。

最佳答案

@XmlElement(required = true) WSDL 是正确的,但问题是在我的 WSDL 上使用 org.apache.cxf.tools.wsdlto.WSDLToJava 工具时,生成了客户端
int interval而不是 Integer interval .

解决方案是将“-b”选项传递给 wsdl2java 工具,其中包含一个 jaxb 绑定(bind)文件的路径,该文件将 xsd:int 映射到 java.lang.Integer。 :

<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
jaxb:version="2.0">
<jaxb:globalBindings>
<jaxb:javaType name="java.lang.Integer"
xmlType="xsd:int" />
</jaxb:globalBindings>
</jaxb:bindings>

使用 @XmlElement(required = true)和 "-b "选项,保留所需的元素 (minOccurs="1") 并将其作为 Integer 公开给 Java 客户端。

更多信息: http://cxf.547215.n5.nabble.com/How-to-declare-an-attribute-required-and-non-primitive-td4815370.html

关于web-services - CXF - 如何声明一个必需且非原始的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7414734/

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