【发布时间】:2012-12-20 11:27:12
【问题描述】:
我有 Jaxws Soap 网络服务。我的 "myMethod" 方法有一个小数类型字段。
这是我的网络服务界面:
@WebService(name = "myWs", targetNamespace = "someNamespace")
@Local
public interface myWsPortType {
@WebMethod
@RequestWrapper(localName = "myMethod", className = "com.example.MyMethodRequest")
public Result myMethod(@WebParam(name = "parameters", mode = Mode.IN) MyMethodParameters parameters);
}
这是参数类
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType()
public class MyMethodParameters implements java.io.Serializable {
@FieldValidation(maxLength = 12)
@XmlElement(name = "myField", required = false)
private java.math.BigDecimal myField;
}
当我在 myField 中传递正确类型的数据时,一切正常。
但是,问题是当我调用 myMethod 并将 String 值(而不是 Decimal)作为参数传递时,不会引发异常并且 myField 的值是 null
这是 Soap 请求示例
<soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<iss:myMethod>
<parameters>
<myField>test</myField>
</parameters>
</iss:myMethod>
</soapenv:Body>
</soapenv:Envelope>
当传递不正确的数据类型时,如何让我的 ws 抛出异常?
【问题讨论】:
-
你的服务的 XSD 是否指示
myField为xsd:decimal? -
@AviramSegal 这是来自我的 wsdl 的 sn-p
标签: java soap jax-ws decimal bigdecimal