我的问题类似于Resteasy Bean Validation Not Being Invoked。但是那里的解决方案不起作用。
我在我的pom中使用Resteasy 3.0.9.Final和resteasy-validator-provider-11。我使用自定义Jetty类启动整个事情。
奇怪的是,验证在@PathParams上工作正常,但在bean上没有。
@POST
@Path("/foo/{myParam}")
public Message post(MyBean myBean, @PathParam("myParam") @Size(min=5) String myParam) {
return new Message("bean:" + myBean.toString());
}
public static class MyBean {
@NotNull
public String myStr;
@Max(value = 3)
public int myInt;
public String toString() {
return myStr + myInt;
}
}
在这种情况下,myParam上的@Size约束正常工作。但是没有调用MyBean中的@NotNull和@Max约束。
我错过了某处的注释吗?
这里还有一个线索。我的日志包括以下条目:
2014-12-30 12:16:56 org.hibernate.validator.internal.util.Version 6446 INFO HV000001: Hibernate Validator 5.0.1.Final
2014-12-30 12:16:56 org.jboss.resteasy.plugins.validation.AbstractValidatorContextResolver 6477 INFO Unable to find CDI supporting ValidatorFactory. Using default ValidatorFactory
答案 0 :(得分:2)
我相信,但不是100%确定,问题是您在@Valid
参数上缺少MyBean
。我还建议将它作为一个单独的类,而不是静态类。
根据规范,对象是复杂对象的方法的验证约束需要使用参数注释@Valid
来确保约束是级联的。