关于验证的问题

Questions around validation

我认为这可能在其他地方得到回答,但在其他帖子的上下文中迷路了。所以,决定在这里重申一下。如果有人知道这个问题已经在别处得到回答,请指出我的方向。那么,我的问题。

  1. 我看到了 JSR-303、JSR-349 和 Hibernate Validator。有什么不同?
  2. 在我看来,Hibernate Validator 是 JSR-303 规范的参考实现,是这样吗?
  3. 那349是多少?
  4. 如果 Hibernate Validator 是规范的参考实现,是否还有其他规范的实现?
  5. 现在我正在寻找的一些细节。我已经阅读了一些关于 JSR-303 的文章,并且大致了解注释是如何工作的。我的问题是我可以动态更改约束值吗?以下面的例子:

    public class Foo {
        @Min(value = 18, message = "Age must be greater than or equal to 18")
        @Max(value = 150, message = "Age must be less than or equal to 150")
        int fooAge;
    }
    

那么,有没有一种方法可以使用规范在运行时提供年龄限制。所以,假设出于某种原因,在一种情况下我需要最小值为 20,最大值为 100。在另一种情况下,我需要 10 和 50,等等

在此先感谢您帮助我解决这个问题。

  1. 303 是 Bean Validation 1.0 的 JSR。 349 是 Bean Validation 1.1 的 JSR。

  2. 项目主页说:"Hibernate Validator 5.x is the reference implementation Bean Validation 1.1!"

  3. JSR 定义规范。 Hibernate 验证器是本规范的参考实现。

  4. 好像不是:http://beanvalidation.org/1.1/certified/

  5. 是的,您可以通过将约束分配给验证组并根据用例激活一个或另一个组来实现。参见 http://beanvalidation.org/1.0/spec/#validationapi-validatorapi-groups

就问题而言:

If Hibernate Validator is a reference impl of the spec, are there other impl's of the spec?

还有 JSR-303 的 apache 实现 -> http://bval.apache.org/很遗憾,最新发布的 Apache BVal (0.5) 不支持 Bean Validation 1.1。它应该在版本中引入:Apache BVal (1.1.0)。现在有一个 alpa-snapshot 版本:

<dependency>
   <groupId>org.apache.bval</groupId>
   <artifactId>bval-jsr</artifactId>
   <version>1.1.0-alpha-SNAPSHOT</version>
</dependency>

更多信息:http://cxf.apache.org/docs/validationfeature.html