Resteasy Bean验证不再被调用

时间:2014-12-30 18:26:32

标签: java jax-rs resteasy bean-validation

我的问题类似于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

1 个答案:

答案 0 :(得分:2)

我相信,但不是100%确定,问题是您在@Valid参数上缺少MyBean。我还建议将它作为一个单独的类,而不是静态类。

根据规范,对象是复杂对象的方法的验证约束需要使用参数注释@Valid来确保约束是级联的。