2016-04-22 78 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

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