JSR 303 Bean Validation包含一些开箱即用的约束,但也允许定义自定义约束。
我觉得许多JSR实现没有附带的项目都存在很多常见的限制。
所以我的问题是:是否有一个(值得信赖的)库包含公共jsr 303(Bean Validation)约束?
答案 0 :(得分:3)
我不知道专用的约束库,但JSR 303参考实现Hibernate Validator提供了几个additional constraints,例如@Email
,@ScriptAssert
,@URL
等(免责声明:我正在为Hibernate Validator做贡献)。
如果您对其他约束有其他想法或要求,请随时在我们的JIRA instance中创建功能请求。
答案 1 :(得分:3)
我得出的结果是没有这样的库。所以我决定分享我的一小组常见约束及其验证器:https://github.com/malkusch/validation
答案 2 :(得分:1)
自 2017 年起就有 Java Bean Validation Extension (jbvext) 库,其中包含 @Before
、@After
和 @Password
注释以实现 OP 的一些愿望。
⚠ 虽然该库认为 null
值失败,但 Bean 验证规范 recommends 空值是有效的。
答案 3 :(得分:1)
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 验证的更多信息,请参阅: