我在下面有xsd架构描述
<xs:element name="ReqStartTest">
<xs:complexType>
<xs:sequence>
<xs:element name="Version" >
<xs:simpleType>
<xs:restriction base="xs:string" />
</xs:simpleType>
</xs:element>
<xs:element name="Time" >
<xs:simpleType>
<xs:restriction base="xs:string" />
</xs:simpleType>
</xs:element>
<xs:element ref="tns:StartTestRequest" minOccurs="1" maxOccurs="1"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="StartTestRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" >
<xs:simpleType>
<xs:restriction base="xs:string" />
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
从xsd文件生成java类后,收到* .wsdl文件。在我测试SOAPUI中的* .wsdl文件之后,我只看到&#34; StartTestRequest&#34;请求。我的问题是,为什么/我的输入数据(&#34;版本&#34;,&#34;时间&#34;)在请求中?
提前致谢。
答案 0 :(得分:0)
Spring只为具有后缀的元素生成请求/响应&#34; request&#34;和#34;回应&#34;。在这种情况下,您正在引用&#34; StartTestRequest&#34;来自&#34; ReqStartTest&#34;。所以,你只会看到&#34; StartTestRequest&#34;其中只有名称字段。您应该扩展或引用&#34; ReqStartTest&#34;在你的&#34; StartTestRequest&#34;
以下应该可以正常工作。
<complexType name="ReqStartTest">
<sequence>
<element name="Version" type="string"/>
<element name="Time" type="string"/>
</sequence>
</complexType>
<element name="StartTestRequest">
<complexType>
<complexContent>
<extension base="tns:ReqStartTest">
<sequence>
<element name="Name" type="string"/>
</sequence>
</extension>
</complexContent>
</complexType>
</element>
<强>更新强>
Spring需要预定义的后缀来标识作为Web服务的请求或响应的元素。默认后缀为&#34;请求&#34;和#34;回应&#34;。您可以在配置中更改它。此主题可能会对您有所帮助:Spring-ws: How to create Wsdl from an xsd with no "Request" element
这也是您在不更改后缀的情况下获得的最接近的内容:
<element name="ReqStartTestRequest">
<complexType>
<sequence>
<element name="version" type="string"/>
<element name="time" type="string"/>
<element name="startTestRequest" type="tns:StartTestRequest"/>
</sequence>
</complexType>
</element>
<complexType name="StartTestRequest">
<sequence>
<element name="name" type="string"/>
</sequence>
</complexType>
我强烈建议您遵循命名约定。例如,变量或非常量字段的首字母应为小写(camelcase表示法)。