gpt4 book ai didi

java - 传递字符串值时,JAX-WS 方法的 Decimal 字段为 NULL

转载 作者:搜寻专家 更新时间:2023-10-31 20:21:42 24 4
gpt4 key购买 nike

我有 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 并将字符串值(而不是 Decimal)作为参数传递时,不会抛出异常并且 myField 的值为

这是 Soap 请求示例

<soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<iss:myMethod>
<parameters>
<myField>test</myField>
</parameters>
</iss:myMethod>
</soapenv:Body>
</soapenv:Envelope>

当传递了不正确的数据类型时,如何让我的 ws 抛出异常?

最佳答案

看起来 XSD 架构生成得很好,您缺少的是 SchemaValidation用于告诉 JAX-WS 使用模式验证请求和响应的注释。

只需将 @SchemaValidation 添加到您的服务中:

@WebService(name = "myWs", targetNamespace = "someNamespace")
@SchemaValidation
@Local
public interface myWsPortType { ... }

关于java - 传递字符串值时,JAX-WS 方法的 Decimal 字段为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13971179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com