无法使@webparam必填字段JAX-WS

时间:2018-04-04 06:32:43

标签: java web-services cxf jax-ws

我正在尝试使用@webparam强制(@XmlElement(required=true),但生成的XSD仍会将其显示为minOccurs="0"。还尝试设置nillable=false但仍无法正常工作。

这是我的网络方法:

@WebMethod
@WebResult(name = "Biller")
public Biller getBiller(@XmlElement(required=true) @WebParam(name = "billerId") Integer billerId){}

请建议。

1 个答案:

答案 0 :(得分:1)

正如我在注释中指定的那样 - 要么将Integer变量包装到某个Java POJO中,要么为该POJO中的特定字段应用规则,要么更改为原始类型,因为 - 引用类型总是可选的但是组成字段包装类型可以是必需的或可选的。 始终需要原始类型。

Refer this answer

然后是关于默认值的问题 - 对于那个引用Answers to this question和摘要是 - 如果没有指定 -

  

minOccurs,maxOccurs默认为1

现在为什么你的呼叫成功使用SOAP UI - 你的xsd是正确的并且由SOAP UI确认,所以我的猜测是客户端可能会在缺少时附加一些默认值。我没有使用SOAP UI。尝试检查您的请求,看看是否真的缺少价值。如果请求中确实缺少值,那么请尝试检查为什么验证没有开始。