有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    我找到了解决办法。非常简单:我必须添加nillable=“true”:

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

    现在生成类中的字段类型很长
    顺便说一句,这表明即使没有人回答你的问题,描述你的问题也是好的(也许这是类似于“橡皮鸭调试”方法中的类似机制?:)