【问题标题】:Resteasy Bean Validation Not Being Invoked, again再次没有调用 Resteasy Bean 验证
【发布时间】:2014-12-30 18:26:32
【问题描述】:

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

【问题讨论】:

  • 您链接到的链接是针对resteasy的测试版,其中代码无论如何都不是最终版本。

标签: java jax-rs resteasy bean-validation


【解决方案1】:

我相信,但不是 100% 肯定,问题在于您在 MyBean 参数上缺少 @Valid。我还建议将其设为单独的类,而不是静态类。

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

【讨论】:

猜你喜欢
  • 2013-06-05
  • 2012-05-17
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 2014-03-08
  • 1970-01-01
  • 2015-07-30
相关资源
最近更新 更多