2016-11-09 11 views
0

這裏是生成WSDL我的Java代碼:@WebMethod(action = "sendRequest") @WebResult(partName= "message") public String addRequest(@WebParam(partName = "firstName") String firstName, @WebParam(partName = "lastName") String lastName, @WebParam(partName = "jmbg") long jmbg, @WebParam(partName = "dateTime") Date dateTime) { try { appointmentManager.getAppointmentRequest().add(new AppointmentRequest(firstName, lastName, jmbg, dateTime)); return "Central office is closed due to the reconstruction. It will reopen on Monday."; } catch (Exception e) { return "Wrong format"; } }賈克斯WS @WebParam(零件名稱)不工作

這裏是我生成的WSDL中產生的複雜類型:<xs:complexType name="addRequest"> <xs:sequence> <xs:element minOccurs="0" name="arg0" type="xs:string"/> <xs:element minOccurs="0" name="arg1" type="xs:string"/> <xs:element name="arg2" type="xs:long"/> <xs:element minOccurs="0" name="arg3" type="xs:dateTime"/> </xs:sequence> </xs:complexType>

正如你所看到的。輸入參數被稱爲arg0,arg1,arg2,arg3,而不是在註釋中指定的名稱。

回答

0

請使用屬性@WebParam的名稱。例如,在你的情況,你的方法簽名可能看起來像:

public String addRequest(@WebParam(name = "firstName") String firstName, 
     @WebParam(name = "lastName") String lastName, @WebParam(name = "jmbg") long jmbg, 
     @WebParam(name = "dateTime") Date dateTime) 

請只使用零件名稱當你的Web服務操作是RPC樣式或文檔樣式,參數類型爲BARE。對於WRAPPED的默認參數樣式,不應使用此partName屬性(其轉換爲wsdl:part名稱)。默認情況下,如果未指定零件名稱,則它的默認值是@ WebParam.name

建議:這是最好只使用一個包含所有屬性,除非WSDL已經共享一個POJO,以便儘量減少方法的參數數量,以便增強幹淨的代碼的強文本,'XML編組和解組'將更快。