4

我在 Java 中使用合约优先生成的 Web 服务有问题。在我的模式中,我有这样的东西:

<element maxOccurs="1" minOccurs="1" name="GUID" type="xs:long" /> 

生成具有如下字段的类:

protected long GUID;

现在,当我尝试触发我的 web 服务时,当不为 GUID 输入任何值时,新 java long 的默认值设置为 (0),并且不会引发异常。当然这不是好的行为,因为我应该需要 guid 元素。另一方面,当我将架构元素更改为以下内容时:

<element maxOccurs="1" minOccurs="0" name="GUID" type="xs:long" /> 

(从逻辑的角度来看这是不正确的,因为需要 GUID 元素)生成的类字段如下所示:

{protected Long GUID; }

现在,当在 Web 服务执行中未设置 GUID 时,GUID 值为 null,我可以检查我是否从 java 代码中抛出异常。

因此,我想请教您如何使用 minOccurs="0" 生成的具有受保护的 Long GUID 的类;(或至少在未设置此值时出现异常)

我正在使用 glassfish 2.1.1 和 SopaUI 提供的 JAXB 来执行 Web 服务。

4

1 回答 1

0

我能够找到解决方案。非常简单:我必须添加 nillable="true" :

<element maxOccurs="1" minOccurs="1" name="GUID" type="xs:long" nillable="true" /> 

现在生成的类中的文件类型是 Long !
顺便提一句。这表明即使没有人回答问题,描述您的问题也是好的(也许它与“橡皮鸭调试”方法中的类似机制?:))

于 2012-11-21T09:36:12.347 回答