JSR 303 Bean Validation 包含一些开箱即用的约束,但也允许定义自定义约束。
我有一种感觉,对于很多没有随 JSR 实现一起发布的项目,存在很多共同的约束。
- 日期范围
- 密码复杂性检查
- 等于跨字段验证(堆栈溢出最高投票的“bean-validation”问题)
- ...
所以我的问题是:是否有一个(值得信赖的)库包含 commons jsr 303(Bean Validation)约束?
JSR 303 Bean Validation 包含一些开箱即用的约束,但也允许定义自定义约束。
我有一种感觉,对于很多没有随 JSR 实现一起发布的项目,存在很多共同的约束。
所以我的问题是:是否有一个(值得信赖的)库包含 commons jsr 303(Bean Validation)约束?
我得出了相同的结果,即没有这样的库。所以我决定分享我的一组常见约束及其验证器:https ://github.com/malkusch/validation
自 2017 年以来,有Java Bean 验证扩展 (jbvext)库,其中包含@Before
,@After
和@Password
注释来满足 OP 的一些愿望。
⚠ 尽管这个库认为null
值是失败的,但 Bean Validation 规范建议null 值是有效的。
Bean Validation 2.0带来了几个有用的附加验证,现在是内置的。
这包括对@Past
/ @PastOrPresent
& @Future
/与@FutureOrPresent
现代java.time类型的支持,例如LocalDate
取代旧的Date
//类。Calendar
Timestamp
您还会发现以下约束:
@NotEmpty
/@NotBlank
@Email
@Positive
// @Negative
…</li>
更高版本的Bean Validation规范只有一个可用的实现:Hibernate Validator。
Hibernate Validator 实现了 Bean Validation 规范要求的所有约束。Hibernate Validator 也实现了其他的。
请参阅Hibernate Validator 版本 7.0.1 中的此列表。它们包括对信用卡和货币、期限、条形码和书籍 ID (ISBN)、文本长度和 Luhn 校验和、URL、集合独特性、以脚本语言编写的自定义约束等的约束。
有关现代 Bean 验证的更多信息,请参阅: