2016-04-22 72 views
0

Java类我有XSD架构描述为什么春天错误生成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文件后,我看到“StartTestRequest”请求。我的问题,为什么/我的输入数据(“版本”,“时间”)在请求?

在此先感谢。

+0

你可以添加你的wsdl文件吗? –

回答

0

Spring仅为具有后缀“request”和“response”的元素生成请求/响应。在这种情况下,您正在引用“ReqStartTest”中的“StartTestRequest”。因此,您只会看到只有名称字段的“StartTestRequest”。您应该在“StartTestRequest”中扩展或引用“ReqStartTest”

以下应该正常工作。

<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> 

更新:

春天需要预定义的后缀来标识那些请求或Web服务的响应元素。默认后缀是“请求”和“响应”。您可以在配置中更改它。这个线程可以帮助你: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符号)。

+0

好吧,我明白了,谢谢。 –