是否存在jsr 303(Bean Validation)的公共约束库?

时间:2013-02-12 10:40:45

标签: java bean-validation

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

我觉得许多JSR实现没有附带的项目都存在很多常见的限制。

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

4 个答案:

答案 0 :(得分:3)

我不知道专用的约束库,但JSR 303参考实现Hibernate Validator提供了几个additional constraints,例如@Email@ScriptAssert@URL等(免责声明:我正在为Hibernate Validator做贡献)。

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

Java Bean 验证扩展 (jbvext)

自 2017 年起就有 Java Bean Validation Extension (jbvext) 库,其中包含 @Before@After@Password 注释以实现 OP 的一些愿望。

⚠ 虽然该库认为 null 值失败,但 Bean 验证规范 recommends 空值是有效的。

答案 3 :(得分:1)

Bean 验证 2.0

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

这包括对 @Past/@PastOrPresent@Future/@FutureOrPresent 与现代 java.time 类型(例如 {{3} } 取代了传统的 Date/Calendar/Timestamp 类。

您还会发现以下约束:

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

休眠验证器

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

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

请参阅 Hibernate Validator 7.0.1 版中的 LocalDate。它们包括信用卡和货币、持续时间、条形码和图书 ID (ISBN)、文本长度和 Luhn 校验和、网址、集合差异性、以脚本语言编写的自定义约束等。


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