这是我生成wsdl:@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";
}
}
以下是我生成的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 :(得分: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)
当您的网络服务操作是RPC样式或文档样式且参数样式为BARE时,请仅使用 partName 。对于WRAPPED的默认参数样式,不应使用此partName属性(转换为 wsdl:part 名称)。默认情况下,如果未指定partName,则其默认值为@ WebParam.name
建议: 最好只使用包含所有属性 的POJO,除非已经共享wsdl ,以便最小化方法的参数数量,以便增强强文本清洁代码,并且“XML编组和解组”将更快。