【问题标题】:Is there a common constraint library for jsr 303 (Bean Validation)?jsr 303(Bean Validation)是否有通用约束库?
【发布时间】:2013-02-12 10:40:45
【问题描述】:

JSR 303 Bean Validation 包含一些开箱即用的约束,但也允许定义自定义约束。

我觉得对于很多没有随 JSR 实现一起发布的项目存在很多共同的约束。

所以我的问题是:是否有一个(值得信赖的)库包含 commons jsr 303(Bean Validation)约束?

【问题讨论】:

    标签: java bean-validation


    【解决方案1】:

    我不知道有专门的约束库,但是 JSR 303 参考实现 Hibernate Validator 提供了几个additional constraints,例如@Email@ScriptAssert@URL 等(免责声明:我正在贡献到休眠验证器)。

    如果您对其他限制有其他想法或要求,请随时在我们的JIRA instance 中创建功能请求。

    【讨论】:

    • 接受答案,因为“我不知道有专门的约束库”——这似乎是(目前)正确的答案。 -- 让我说我非常尊重 Hibernate Validator,我使用它并且我喜欢它。但我不认为公共约束应该是 JSR303-Implementation 的一部分。因为它们是独立于实现的,所以它们应该被收集在一个独立的库或至少一个单独的 jar 中。
    【解决方案2】:

    我得出了相同的结果,即没有这样的库。所以我决定分享我的一组常见约束及其验证器:https://github.com/malkusch/validation

    【讨论】:

    • 链接已损坏。
    【解决方案3】:

    Java Bean 验证扩展 (jbvext)

    自 2017 年以来出现了 Java Bean Validation Extension (jbvext) 库,其中包含 @Before@After@Password 注释以满足 OP 的一些愿望。

    ⚠ 尽管此库认为 null 值失败,但 Bean 验证规范 recommends 空值是有效的。

    【讨论】:

      【解决方案4】:

      Bean 验证 2.0

      Bean Validation 2.0 带来了几个有用的附加验证,现在是内置的。

      这包括对 @Past/@PastOrPresent@Future/@FutureOrPresent 的支持以及取代旧版 Date/@ 的现代 java.time 类型,例如 LocalDate 987654336@/Timestamp 类。

      您还会发现以下约束:

      • @NotEmpty/@NotBlank
      • @Email
      • @Positive/@Negative/...

      休眠验证器

      Bean Validation 规范的更高版本只有一个可用的实现:Hibernate Validator

      Hibernate Validator 实现了 Bean Validation 规范要求的所有约束。 Hibernate Validator 也实现了其他的。

      请参阅 Hibernate Validator 版本 7.0.1 中的 this list。它们包括对信用卡和货币、期限、条形码和图书 ID (ISBN)、文本长度和 Luhn 校验和、URL、集合独特性、以脚本语言编写的自定义约束等的约束。


      有关现代 Bean 验证的更多信息,请参阅:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-05
        • 2011-12-28
        • 1970-01-01
        相关资源
        最近更新 更多