我正在尝试使用@webparam
强制(@XmlElement(required=true)
,但生成的XSD仍会将其显示为minOccurs="0"
。还尝试设置nillable=false
但仍无法正常工作。
这是我的网络方法:
@WebMethod
@WebResult(name = "Biller")
public Biller getBiller(@XmlElement(required=true) @WebParam(name = "billerId") Integer billerId){}
请建议。
答案 0 :(得分:1)
正如我在注释中指定的那样 - 要么将Integer
变量包装到某个Java POJO中,要么为该POJO中的特定字段应用规则,要么更改为原始类型,因为 - 引用类型总是可选的但是组成字段包装类型可以是必需的或可选的。
始终需要原始类型。
然后是关于默认值的问题 - 对于那个引用Answers to this question和摘要是 - 如果没有指定 -
minOccurs,maxOccurs默认为1
现在为什么你的呼叫成功使用SOAP UI - 你的xsd是正确的并且由SOAP UI确认,所以我的猜测是客户端可能会在缺少时附加一些默认值。我没有使用SOAP UI。尝试检查您的请求,看看是否真的缺少价值。如果请求中确实缺少值,那么请尝试检查为什么验证没有开始。