Java ContractFirst web服务中的“minOccurs”和生成的类型
我对契约第一次在Java中生成的web服务有问题。在我的模式中,我有如下内容:
<element maxOccurs="1" minOccurs="1" name="GUID" type="xs:long" />
这将生成具有如下字段的类:
protected long GUID;
现在,当我尝试启动我的Web服务时,当不为GUID设置任何值时,新java long的默认值被设置为(0),并且不会引发异常。当然,这不是一个好的行为,因为guid元素应该是必需的。 另一方面,当我将schema元素更改为以下内容时:
<element maxOccurs="1" minOccurs="0" name="GUID" type="xs:long" />
(从逻辑角度来看,这是不正确的,因为需要GUID元素)生成的类字段如下所示:
{protected Long GUID; }
现在,当web服务执行中未设置GUID时,GUID值为null,我可以检查java代码中的抛出异常
因此,我想请教您如何使用minOccurs=“0”生成的类和受保护的长GUID;(或至少在未设置此值时获取异常)
我使用GlassFish2.1.1和SopaUI提供的JAXB来执行web服务
# 1 楼答案
我找到了解决办法。非常简单:我必须添加nillable=“true”:
现在生成类中的字段类型很长
顺便说一句,这表明即使没有人回答你的问题,描述你的问题也是好的(也许这是类似于“橡皮鸭调试”方法中的类似机制?:)