Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
minOccurs=";0“;在VB.NET和Java中使用很长时间_Java_Vb.net_Xsd - Fatal编程技术网

minOccurs=";0“;在VB.NET和Java中使用很长时间

minOccurs=";0“;在VB.NET和Java中使用很长时间,java,vb.net,xsd,Java,Vb.net,Xsd,我有一个用VB.NET编写的Web服务,在其中,我有一个很长的定义: <s:element minOccurs="0" maxOccurs="1" name="clientId" type="s:long"/> 现在,每当我从另一个VB.NET应用程序调用此WS时,以及设置clientIdvar,我还必须将clientSpecified设置为True——这是.NET的怪癖。但是,我的客户机使用Java,问题是-他们是否也必须这样做,并将clientspecified设置为Tru

我有一个用VB.NET编写的Web服务,在其中,我有一个很长的定义:

<s:element minOccurs="0" maxOccurs="1" name="clientId" type="s:long"/>

现在,每当我从另一个VB.NET应用程序调用此WS时,以及设置
clientId
var,我还必须将
clientSpecified
设置为
True
——这是.NET的怪癖。但是,我的客户机使用Java,问题是-他们是否也必须这样做,并将
clientspecified
设置为
True


这个布尔值不是规范的一部分,所以如果他们确实需要设置它,我必须警告他们

如果您的客户机使用的是java,只需给他们xsd文件就足够了,因为它可以编译成java类,在被封送到xml之前提供验证


但需要注意的是,minOccurs=0意味着可以选择设置

在Java端,这种构造通常被编译成
Java.lang.Long
(包装类)类型的属性,而不是
Long
(原语类型),使用
null
值表示元素不存在的情况。

我将向客户端提供XSD,但问题是,他们是否必须将
clientId指定的
变量设置为
True
才能传递
clientId
值?因为这是我在.NET中必须做的。我不知道这是VB.NET的一个怪癖,还是它也会影响Java。据我所知,不是。clientId是一个强制属性吗?
clientId
不是强制属性,因此
minOccurs=0
。但是,当我确实想在
clientId
中传递一个非空值,并且我正在使用VB.NET应用程序来传递该值时,我必须设置
clientdSpecified=True
——这是.NET的一个怪癖。我关心的是,使用Java应用程序调用我的WS的人是否也需要这样做。
clientidSpecified
不会出现在XSD中,它会在我向项目添加WebService时出现在visual Studio中的Reference.vb文件中。如果java端使用JAX-WS,则不会,模式编译器会将元素表示为
java.lang.Long
,可以根据需要设置为
null
或不为null。但是您需要关心的是如何正确使用WSDL,客户机工具包如何解释WSDL取决于他们。如果我没记错的话,java端将由java.lang.Long表示,因此一旦设置,它就不是空的。是的,这没有帮助,不是吗?;)。。。。我将删除并更新注释。这实际上取决于您的Java朋友使用的XSD到代码绑定技术。即使在这项技术中,它也取决于版本。例如:JAXB 1.x与2.x、自定义设置与默认绑定;有关示例讨论,请查看