在字段中发送0时发生javax.validation.ConstraintViolationException
我已经通过命令生成了一些java代理类 wsimport-J-Djavax.xml.accessExternalSchema=all-keep-verbose 然后我将它集成到我的java应用程序中。服务很好。 我遇到的一个问题是在一个长字段(第三个参数)中发送0时出现以下错误。不知道从何处添加此内部约束,因为wsdl中没有任何内容 javax.validation.ConstraintViolationException:方法验证期间发生1个约束冲突在字段中发送0时发生javax.validation.ConstraintViolationException,java,constraints,Java,Constraints,我已经通过命令生成了一些java代理类 wsimport-J-Djavax.xml.accessExternalSchema=all-keep-verbose 然后我将它集成到我的java应用程序中。服务很好。 我遇到的一个问题是在一个长字段(第三个参数)中发送0时出现以下错误。不知道从何处添加此内部约束,因为wsdl中没有任何内容 javax.validation.ConstraintViolationException:方法验证期间发生1个约束冲突 Constructor or Method
Constructor or Method: public .... ...(java.lang.String,int,long,java.lang.String,java.lang.String)
Argument values: [23123123123, 31, 0, sdfsdf, sdfsdfsdfsdf]
Constraint violations:
(1) Kind: PARAMETER
parameter index: 2
message: recipientMsisdn must be greater than or equal to 1
root bean: com.sdsd
property path: mymethod.arg2
constraint: @javax.validation.constraints.Min(message=recipientMsisdn must be greater than or equal to 1, payload=[], groups=[], value=1)
More overmessage=recipientMsisdn必须大于或等于1引用的是第一个字段名,而错误是由于第三个字段引起的
注:
我正在使用JDK1.7,因为它正在我的生产服务器上运行
我的输入元素的wsdl部分是
<xs:sequence>
<xs:element name="recipientMsisdn" type="xs:string"/>
<xs:element name="field2" type="xs:int"/>
<xs:element name="field3" type="xs:long"/>
<xs:element name="field4" type="xs:string"/>
<xs:element name="field5" type="xs:string"/>
</xs:sequence>
他们可能正在使用
@Range(min=1)
从javax.validation.constraints进行验证这看起来是有意的-可能在recipientMsisdn
上设置了@min(1)
验证,以防止0或负值,但不知道为什么要添加此约束,该约束不允许字段中出现0。我还添加了wsdl部分,从中生成了代理类。此外,recepientMsidn是一个字符串字段。由于我发送01的字段3出现错误。您的“参数顺序”似乎不匹配(recipientMsisdn不是,但field3是0)。2.请查看/粘贴相关生成的java代码(wsimport(?)的目标文件夹),我的观点(1.)是:在您的示例中,长(field3
)是/似乎是0
,但错误消息说:recipientmisdn
!。和2.:some-one/thing必须设置这个(some)验证约束。。。。由于错误消息清楚地说明了(除了(我的期望)哪个字段)…是否“中间没有任何内容”。。。映射(、混淆顺序和验证)您的输入?
@WebMethod
@WebResult(targetNamespace = "")
@RequestWrapper(localName = "MyMethod", targetNamespace = "....", className = "....")
@ResponseWrapper(localName = "MyApiResponse", targetNamespace = "....", className = "...")
public MyApiResponse MyMethod(
@WebParam(name = "recipientMsisdn", targetNamespace = "" )
String recipientMsisdn,
@WebParam(name = "field2", targetNamespace = "")
int field2,
@WebParam(name = "field3", targetNamespace = "")
long field3,
@WebParam(name = "field4", targetNamespace = "")
String field4,
@WebParam(name = "field5", targetNamespace = "")
String field5);