我的问题类似于Resteasy Bean Validation Not Being Invoked。不过,那里的解决办法行不通。
我正在使用Resteasy 3.0.9,在我的pom中使用resteasy-验证器-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发布于 2014-12-31 03:08:29
我相信,但不是100%肯定,问题是您缺少了@Valid的MyBean参数。我还建议将它改为单独的类,而不是静态类。
根据规范,对于对象是复杂对象的方法的验证约束需要有参数注释的@Valid,以确保约束是级联的。
https://stackoverflow.com/questions/27710571
复制相似问题